2016-10-26 53 views
-1

這是我的表結構。MYSQL:返回什麼符合多個搜索條件

我有一個查詢一樣,

SELECT `user_pid` from `table` WHERE 
`upchain` LIKE '%,33,%' OR `upchain` LIKE '%,52,%' OR upchain LIKE '%,98,%' 

這給像結果:

enter image description here

但我需要知道哪一行匹配該搜索條件。 有沒有什麼辦法讓下面的結果:

user_pid | search_critetis 
-------------------------- 
    33  | ,33, 
    52  | ,52, 
    98  | ,98, 
    100 | ,98, 
    101 | ,98, 
+4

你應該真的改變你的餐桌設計。切勿將多個值存儲在單個列中 –

+0

@juergend:是的,我知道。我不得不爲這個特定任務創建這張桌子。這不是我的主桌。 – kadamb

+0

@kadamb我們可以解決問題嗎? – rbr94

回答

0

如果可能的話,你可以重寫查詢爲

SELECT `user_pid` ,'%,33,%' from `table` WHERE 
`upchain` LIKE '%,33,%' 
union all 
SELECT `user_pid` ,'%,52,%' from `table` WHERE 
`upchain` LIKE '%,52,%' 

您也可以使用case

0

嘗試使用CASE WHEN重寫查詢:

SELECT user_pid, 
     CASE WHEN upchain LIKE '%,33,%' THEN ',33,' ELSE 
     CASE WHEN upchain LIKE '%,52,%' THEN ',52,' ELSE 
     CASE WHEN upchain LIKE '%,98,%' THEN ',98,' END END END as upchain 
FROM table 
WHERE upchain LIKE '%,33,%' OR upchain LIKE '%,52,%' OR upchain LIKE '%,98,%' 
0
SELECT 
user_pid, 
IF(upchain LIKE '%,33,%', '%,33,% condition' , 
    IF(
     upchain like '%,52,%', '%,52,% condition', 
     IF(
      upchain like '%,98,%', '%,98,% condition', 
      'other condition' 
     )    
    ) 
) 
as condition from table 

您可以使用此語法,並根據需要添加多個條件。

IF('your condition', << true part >>, "another condition OR elase part")