2016-07-22 60 views
0

我有一個查詢,看起來像這樣:忽略的部分串和不同

SELECT paginas_acesso.id, tipo_acesso, tipos_acesso.nome_modulo, nome_pagina, IF(nome_pagina LIKE '/main%', TRUE, FALSE) AS main, IF(nome_pagina LIKE '/test%', TRUE, FALSE) AS test 
FROM paginas_acesso 
LEFT JOIN tipos_acesso ON tipo_acesso=tipos_acesso.id 
WHERE tipo_acesso=40 
ORDER BY nome_pagina ASC 

結果是這樣的:

id tipo_acesso nome_modulo  nome_pagina   main test 
11  40   teste  /main/teste/teste.php  1 0 
10  40   teste  /test/teste/teste.php  0 1 

,但我想忽略「/主」和「/測試「在」nome_pagina「列中,只顯示1行。

事情是這樣的:

id tipo_acesso nome_modulo nome_pagina  main test 
11  40   teste /teste/teste.php 1 1 

回答

1

這應該給你想要的結果:

SELECT  MAX(paginas_acesso.id) id 
,   MAX(tipo_acesso) tipo_acesso 
,   MAX(tipos_acesso.nome_modulo) nome_modulo 
,   SUBSTRING(nome_pagina, 6, LEN(nome_pagina) - 5) nome_pagina 
,   MAX(IF(nome_pagina LIKE '/main%', TRUE, FALSE)) AS main 
,   MAX(IF(nome_pagina LIKE '/test%', TRUE, FALSE)) AS test 
FROM  paginas_acesso 
LEFT JOIN tipos_acesso 
     ON tipo_acesso = tipos_acesso.id 
WHERE  tipo_acesso = 40 
GROUP BY SUBSTRING(nome_pagina, 6, LEN(nome_pagina) - 5) nome_pagina 
ORDER BY SUBSTRING(nome_pagina, 6, LEN(nome_pagina) - 5) ASC 

順便說一句,這是使用表的別名好的做法。

1

這是你想要的嗎?

SELECT (CASE WHEN nome_pagina LIKE '/main/%' THEN substr(nome_pagina, 7) 
      WHEN nome_pagina LIKE '/test/%' THEN substr(nome_pagina, 7) 
      ELSE nome_pagina 
     END)