2010-07-20 80 views
0

有沒有一種方法可以將多個WHERE合併爲一個MySQL Where and Like問題

這裏是我想合併的。

SELECT * 
FROM question 
WHERE content LIKE '%$search_each%' 
WHERE title LIKE '%$search_each%' 
WHERE summary LIKE '%$search_each%' 
+1

建議的話@lone,如果你想要擴展數據庫,你最好不要使用'LIKE'。有更好的方法來做到這一點。我不會在這裏進入他們,因爲大多數使用'LIKE'的人通常不是DBA,所以不關心可擴展性:-)只是一點點的建議,以保持在你的腦海中的一個下雨天未來。 – paxdiablo 2010-07-20 04:29:37

回答

1

可以使用AND或OR運算

SELECT * 
FROM question 
WHERE content LIKE '%$search_each%' 
AND title LIKE '%$search_each%' 
AND summary LIKE '%$search_each%' 
+0

AND和OR – lone 2010-07-20 04:26:48

+0

有什麼區別AND和OR是標準的邏輯運算符。 http://en.wikipedia.org/wiki/Logical_connective#Common_logical_connectives – advait 2010-07-20 04:35:38

+0

對於普通的搜索查詢,AND'不是一個好的運算符 – Walf 2011-07-13 07:45:01

1
SELECT * 
FROM question 
WHERE content LIKE '%$search_each%' 
AND title LIKE '%$search_each%' 
AND summary LIKE '%$search_each%' 

這隻會返回其中的內容,標題和摘要包含搜索文本輸入。

SELECT * 
FROM question 
WHERE content LIKE '%$search_each%' 
OR title LIKE '%$search_each%' 
OR summary LIKE '%$search_each%' 

這將返回條目任何字段包含搜索詞。

例如:假設你有內容,標題,摘要 我的標題,我的總結順序如下數據,我的內容 這是一個稱號,這是不是一個冠軍,也不是那 不是粉絲,打了很多,所以我現在是一個停止

如果search_each設置爲「標題」,你使用AND查詢,你只會回到第一行。 第二行不會回來,因爲摘要[第3項]沒有字標題。 如果您有相同的search_each並使用OR查詢,則1和2都會返回。它們都包含三列中的至少一列中的搜索項。 如果將搜索詞設置爲「a」,AND查詢將僅返回第3行,而OR查詢將返回所有3行。

AND與OR之間的區別在於AND要求所有「與」在一起的項目都是真實的,或者只要求其中的1個爲真。