我有這個SQL查詢,這是由於我自己對MySQL處理嵌套查詢缺乏知識和問題,實際上處理起來很慢。查詢是...在MySQL中避免有問題的嵌套查詢
SELECT DISTINCT PrintJobs.UserName
FROM PrintJobs
LEFT JOIN Printers
ON PrintJobs.PrinterName = Printers.PrinterName
WHERE Printers.PrinterGroup
IN (
SELECT DISTINCT Printers.PrinterGroup
FROM PrintJobs
LEFT JOIN Printers
ON PrintJobs.PrinterName = Printers.PrinterName
WHERE PrintJobs.UserName='<username/>'
);
我想避免將其分解爲兩個查詢,並將子查詢的值插入主查詢主動。
同意,表1看起來很可疑。投票刪除它=) – 2010-09-05 12:53:11
這個想法是選擇與用戶 相同的「打印組」的成員的所有用戶。表PrintJobs(id,UserName,PrinterName),表格Printers(PrinterName,PrinterGroup)。 PrintJobs表包含很多其他不相關的字段。我希望只是加入子查詢會更好,我想不會,我會刪除它。 –
Ablue
2010-09-05 12:53:18
好吧,看起來好多了,它在子查詢和主要查詢中分別節省大約1/2秒。 – Ablue 2010-09-05 13:10:36