MYSQL 仅限制 "viewed"=1 的值,但不限制 viewed="0"
MYSQL LIMIT only the values where "viewed"=1 , but not viewed="0"
这对我来说很难。我有一个保存用户通知的 table。有一列 "VIEWED",其中 0 表示尚未查看,1 表示已查看。
我想生成我的通知列表,SELECT * 未查看 (0),但是如果我没有未查看的通知,我不想只显示 "no notififications" 我想展示一些旧的。
我已经先展示了我最近未查看的内容。有没有办法做一些事情来显示所有未查看的内容,但只有少数人查看?像下面这样?
$QUERY= "SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC, created_date DESC (LIMIT 10 WHERE VIEWED='1') "
也许你想要UNION ALL
,限制'VIEWED'
旧的,只需将limit
子句放在SELECT
[=15=括号内]
(SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC)
UNION ALL
(SELECT * FROM point_member_notifications WHERE account_id='$accountid' WHERE VIEWED='1' created_date DESC LIMIT 10);
您可以结合使用 LIMIT 和 UNION(如果您不想删除重复记录,则可以使用 UNION ALL)。这可能看起来像:
(SELECT *
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='1'
ORDER BY created_date DESC LIMIT 10)
UNION ALL
SELECT *
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='0'
ORDER BY created_date DESC
LIMIT 10
如果你想有 10 条未查看的记录 + 10 条旧记录你需要把第二个 SELECT 也放在括号中,否则最后的 LIMIT 10 将限制整个事情。不需要查看的 ORDER BY,因为 UNION 已经先选择未查看的,然后再选择其他的。
这对我来说很难。我有一个保存用户通知的 table。有一列 "VIEWED",其中 0 表示尚未查看,1 表示已查看。
我想生成我的通知列表,SELECT * 未查看 (0),但是如果我没有未查看的通知,我不想只显示 "no notififications" 我想展示一些旧的。
我已经先展示了我最近未查看的内容。有没有办法做一些事情来显示所有未查看的内容,但只有少数人查看?像下面这样?
$QUERY= "SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC, created_date DESC (LIMIT 10 WHERE VIEWED='1') "
也许你想要UNION ALL
,限制'VIEWED'
旧的,只需将limit
子句放在SELECT
[=15=括号内]
(SELECT * FROM point_member_notifications WHERE account_id='$accountid' ORDER BY viewed ASC)
UNION ALL
(SELECT * FROM point_member_notifications WHERE account_id='$accountid' WHERE VIEWED='1' created_date DESC LIMIT 10);
您可以结合使用 LIMIT 和 UNION(如果您不想删除重复记录,则可以使用 UNION ALL)。这可能看起来像:
(SELECT *
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='1'
ORDER BY created_date DESC LIMIT 10)
UNION ALL
SELECT *
FROM point_member_notifications WHERE account_id='$accountid' AND VIEWED='0'
ORDER BY created_date DESC
LIMIT 10
如果你想有 10 条未查看的记录 + 10 条旧记录你需要把第二个 SELECT 也放在括号中,否则最后的 LIMIT 10 将限制整个事情。不需要查看的 ORDER BY,因为 UNION 已经先选择未查看的,然后再选择其他的。