是否可以使用MySQL在子查詢中引用外部查詢?我知道有一些案件其中這是可能的:在子查詢中引用外部查詢的表
SELECT *
FROM table t1
WHERE t1.date = (
SELECT MAX(date)
FROM table t2
WHERE t2.id = t1.id
);
但我想,如果這樣的事情可以工作:
SELECT u.username, c._postCount
FROM User u
INNER JOIN (
SELECT p.user, COUNT(*) AS _postCount
FROM Posting p
--# This is the reference I would need:
WHERE p.user = u.id
GROUP BY p.user
) c ON c.user = u.id
WHERE u.joinDate < '2009-10-10';
我知道我可以在相同的使用實現了GROUP BY
或通過將外部WHERE
子句拉入子查詢中,但我需要這個用於自動SQL生成,並且由於各種其他原因,不能使用其他替代方法。
UPDATE:對不起,這個問題導致了一些困惑:第一個查詢只是一個工作的例子,來證明什麼,我不需要。
更新2:我需要兩個u.id = p.user比較:第一個計算在'2009-10-10'之前加入的用戶,而另一個是正確關聯錶行的連接條件。
爲什麼更新2? sql將解析派生表'c'並獲取所有用戶標識符及其後期計數的完整列表。那麼'ON c.user = u.id'的連接只會返回滿足'u'上的joinDate約束的用戶。 – oedo 2010-04-15 16:19:54
哦,你絕對正確,看起來像是我的錯誤。我會把你的commant標記爲接受的答案:) – soulmerge 2010-04-15 16:47:47
謝謝,很高興我能幫到:) – oedo 2010-04-15 23:28:25