1

この条件付き 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 変数に格納する方法が必要です。

4

1 に答える 1

1

CASE WHEN ... THEN ... ELSE ... ENDの式としてwith SUM(またはCOUNTusing NULLthe ELSEresult)を使用できます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 つのカウントの合計が返される行数よりも多くなる場合があることに注意してください。

于 2013-03-02T18:40:55.600 に答える