2017-05-10 47 views
0

這對我來說是一個艱難的。我有一張保存用戶通知的表格。有一列「VIEWED」,其中0表示它沒有被查看,1表示它已經被查看。MYSQL LIMIT只有其中「觀看」= 1,但沒有觀看=「0」

我想要生成我的通知列表,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') " 

回答

0

也許你想UNION ALL,限制「VIEWED'舊的,只需將limit子句封閉SELECT

(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); 
+0

你是對的,你先回答。這實際上是一個簡單的解決方案太大聲了。 –

0

你可以使用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條未觀看+你需要把第二個SELECT括號太10分的記錄,否則在結束LIMIT 10將限制整個事情。 ORDER BY查看不應該是必要的,因爲UNION已經先選擇了未查看,然後是其他查看。