我有这张桌子

f_id  |  user_id | sent
==============================
  1   |   1      | 0
  1   |   2      | 1397820533
  1   |   3      | 0
  1   |   4      | 1397820533
  2   |   1      | 1397820533
  2   |   2      | 1397820533
  2   |   3      | 1397820533
  3   |   1      | 1397820533
  3   |   2      | 1397820533

现在我希望所有f_id字段都有一个时间戳(!=0)
SELECT * FROM  table WHERE sent != 0 GROUP BY f_id

返回所有三个,因为有些有时间戳。
一个我期待的结果
f_id
=====
  2
  3

因为sent仍然有一些0值

最佳答案

您已接近,但要将条件移到having子句:

SELECT f_id
FROM  table
GROUP BY f_id
HAVING SUM(sent = 0) = 0;

having子句用sent = 0计算行数。= 0表示没有它们。

09-25 17:37