[英]SQL : Alias in FROM subquery MySQL doesn't work
我有2個表格:“討論”和“消息”。 我只需要顯示最多參加者的兩個討論。
discussion
ID user title timestamp
1 1 First title topic 2016-02-20 14:22:15
2 2 Second title topic 2016-02-21 18:03:55
3 5 Third title topic 2016-02-23 16:00:28
message
ID discussion user message timestamp
1 2 2 Lorem ipsum dolor sit amet consect... 2016-02-20 14:22:15
2 2 1 Lorem ipsum dolor sit amet consect... 2016-02-21 18:03:55
3 1 3 Lorem ipsum dolor sit amet consect... 2016-02-23 16:00:28
4 3 5 Lorem ipsum dolor sit amet consect... 2016-02-20 14:22:15
5 2 5 Lorem ipsum dolor sit amet consect... 2016-02-21 18:03:55
SELECT d.ID AS idDisc FROM discussion AS d
WHERE 1=1
ORDER BY (
SELECT (SUM(tmp.item)+1) FROM (
SELECT (1) AS item FROM messages AS m WHERE m.discussion = idDisc GROUP BY m.user
) AS tmp
) DESC
LIMIT 2
當我執行此SQL時,向我發送錯誤:
1054-“ where子句”中的未知列“ idDisc”
我已經嘗試了很多事情,COUNT()無法正常工作,並且給我一個完全錯誤的結果。 當我通過直接在查詢中完成ID來運行子查詢時,它不適用於COUNT:
SELECT COUNT(*) AS total FROM messages AS m WHERE m.discussion = '1' GROUP BY m.user
以同樣的方式,當我運行在完整查詢中編寫的子查詢並寫入值時,它可以完美地工作:
SELECT (SUM(tmp.item)+1) FROM (
SELECT (1) AS item FROM messages AS m WHERE m.discussion = '1' GROUP BY m.user
) AS tmp
我認為問題來自子查詢的FROM中未解釋的別名。
請幫助我,我真的找到了解決方案...
正如@Strawberry指出的那樣,您編寫的查詢與您顯然在尋找的實際數據並沒有真正的關聯。 要查找發布消息的唯一用戶ID數量最多的兩個討論,您需要這樣的事情:
SELECT *
FROM discussion
WHERE id IN (
SELECT discussion
FROM messages
ORDER BY COUNT(DISTINCT user) DESC LIMIT 2
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.