2013-03-02 59 views
1

請看一看這個條件MySQL查詢:Mysql的有條件的情況下查詢 - 找出每個條件有多少行返回

SELECT attr1,attr2,attr3 FROM table 
WHERE 
(attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%') 
OR 
(attr2 BETWEEN '30' AND '45') 
OR 
(attr3 IN ('cond3') AND attr3 = 'cond4' AND attr3 BETWEEN '18' AND '30') 
ORDER BY CASE 
WHEN (attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%') THEN 1 
WHEN (attr2 BETWEEN '30' AND '45') THEN 2 
ELSE 3 
END 

有沒有一種方法,我可以與MySQL和PHP獲得的行數每個條件回報?或者在租約條件3?

我需要一種方法來知道條件3返回了200行,例如將這個值存儲到一個php變量中。

+0

您應該運行兩個不同的查詢來獲取您的某個條件的結果的數據和計數。 – mavrosxristoforos 2013-03-02 18:52:22

回答

1

可以使用CASE WHEN ... THEN ... ELSE ... ENDSUM(或COUNT使用NULL作爲ELSE結果)以SELECT的表達。使用您在上面給出的例子,你會做這樣的事情:

SELECT 
    SUM(CASE WHEN attr1 LIKE '%cond1%' OR attr1 LIKE '%cond2%' THEN 1 ELSE 0 END) AS condition1count, 
    SUM(CASE WHEN attr2 BETWEEN '30' AND '45' THEN 1 ELSE 0 END) AS condition2count, 
    SUM(CASE WHEN attr3 IN ('cond3') AND attr3 = 'cond4' AND attr3 BETWEEN '18' AND '30' THEN 1 ELSE 0 END) AS condition3count 
FROM 
    table 
... 

請記住,但是,根據數據的內容中的某些行可以匹配的3個條件多於一個,等等這3個計數的總和可能大於返回的行數。