我有一个使用 Facebook ID 或 Contact # 作为参赛者标识符的网络应用程序。这是因为客户不希望那些没有 Facebook 的人错过进入(所以有一个网络应用程序和一个 Facebook 应用程序)
所以我试图:
SELECT *, COUNT(*)
FROM `entries_table`
WHERE is_daily_winner = 2
GROUP BY fbid OR contact_no
HAVING COUNT(*) <=4
基本上,我想要实现的是选择每个oris_daily_winner = 2
小于或等于 4 行的条目。fbid
contact_no
目前我只得到一排,而不是我期待的 3 排。
我究竟做错了什么?或者我什至可以GROUP BY x OR y
吗?
编辑:我正在扩展这个问题,因为我忘记包含另一个子句。
HAVING COUNT(*) <=4
应该在所有条目中,但我只需要在最后一天输入。
我刚刚尝试过:
SELECT * FROM `entries_table`
WHERE `timestamp` >= (CURDATE() - INTERVAL 1 DAY) IN
(SELECT * FROM `entries_table`
WHERE is_daily_winner = 2
GROUP BY fbid
HAVING COUNT(*) <=4
UNION
SELECT * FROM `entries_table`
WHERE is_daily_winner = 2
GROUP BY contact_no
HAVING COUNT(*) <= 4)
我得到了错误Operand should contain 1 column(s)