2013-02-18 15 views
0

我想做一個SQL查詢l 但我如何執行一個SQL SELECT語句中的IF ... THEN,如:「 select table1 table2 table2 where if(name像然後命名就好了)其他名稱,如b」MYSQL如果不喜歡,就像B

回答

2

可以使用OR運營商,連接兩個布爾條款:

WHERE name LIKE ... 
    OR name LIKE ... 

注意ORAND優先級高,所以如果你想結合其他限制,你需要使用圓括號;例如:

WHERE (name LIKE '%a%' OR name LIKE '%b%') 
    AND id < 1000 
+0

我不能使用「或」,因爲我不能選擇a和b只是只有a或b – 2013-02-19 18:01:39

+0

我想查詢可以檢查完全爲空例如:select a where case when a like% b%然後像%b%else(如果在搜索表的每一行後仍然返回null)類似於%c%(如果在任何行中匹配skip else語句)能否幫助我 – 2013-02-19 18:15:20

1

SQL是不是一種編程語言,它沒有如果,那麼,否則等,如果所需要的條件,可以在設定的操作,例如,表達和或者你可以做到這一點。

否則,您需要編寫一個存儲過程,存儲函數或存儲例程。請參閱http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html,這將允許您編寫程序代碼。設定的操作通常要快得多。

1

MySQL支持IF語句和CASE語句。嘗試是這樣的假設a和b是在你的表和名稱的一個列在你的其他表中的列:

select name 
    from table1,table2 
    where name like 
     case 
      when name like a 
      then a 
      else b 
     end 

和一些示例小提琴:http://sqlfiddle.com/#!2/c6ce6/1

您可能想要使用「% '用你的LIKE查詢 - 如果是的話,CONCAT相應。如果需要,這個相同的邏輯可以與字符串值一起使用。

請張貼您的表格結構,樣本數據和所需的輸出,以便我們可以完全理解您的問題,並提供最佳答案。

+0

非常感謝它的工作^^ – 2013-02-19 18:00:31

+0

@KhoaTrumcuoi - np,很高興我們可以幫助!順便說一句 - 如果任何答案對您有幫助,請考慮將其標記爲已接受,以便該網站的未來用戶知道您的問題已得到解決。祝你好運! – sgeddes 2013-02-19 18:52:19

+0

sorr,但我不知道明白你的意思是如何「標記他們接受」bescase我只是一個新手^^ sorr – 2013-02-20 07:20:27