以下のようなクエリがあります。
SELECT Id, FIND_IN_SET('22', Category ) >0 AS `tot_cat`
FROM tbl_doctorprofile
私は結果1を取得しています。その行では値「22」を取得しています。それ以外の場合は0..なので、結果は以下のようになります。
Id tot_cat
----------
1 0
2 0
3 1
4 0
しかし、値が1の行の数だけが必要です。
以下のようなクエリがあります。
SELECT Id, FIND_IN_SET('22', Category ) >0 AS `tot_cat`
FROM tbl_doctorprofile
私は結果1を取得しています。その行では値「22」を取得しています。それ以外の場合は0..なので、結果は以下のようになります。
Id tot_cat
----------
1 0
2 0
3 1
4 0
しかし、値が1の行の数だけが必要です。
したがって、列を合計するだけです:
SELECT SUM(FIND_IN_SET('22', Category ) >0) AS `tot_cat`
FROM tbl_doctorprofile
または正式にはもう少し良い:
SELECT COUNT(*)
WHERE FIND_IN_SET('22', Category ) > 0
FROM tbl_doctorprofile
これを試して:
SELECT Id,
COUNT(CASE WHEN FIND_IN_SET('22', Category ) > 0 THEN 1 END) AS `tot_cat`
FROM tbl_doctorprofile
以下のクエリを使用できます。
SELECT COUNT(1) FROM
(SELECT Id, FIND_IN_SET('22', Category ) >0 AS `tot_cat`
FROM tbl_doctorprofile ) t WHERE t.tot_cat!=0;
これが欲しかったの?
SELECT Id, FIND_IN_SET('22', Category ) >0 AS `tot_cat`
FROM tbl_doctorprofile
HAVING `tot_cat` = 1