我有2個表的數據庫:如何優化此查詢以擺脫子查詢?
表1:
CREATE TABLE IF NOT EXISTS `sales` (
`sale_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`sale_total` int(11) NOT NULL,
`sale_date` date NOT NULL,
`sale_status` int(11) NOT NULL,
PRIMARY KEY (`sale_id`)
) ;
表2:
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`lastname` varchar(200) NOT NULL,
`mail` varchar(200) NOT NULL,
PRIMARY KEY (`user_id`)
);
我需要下面的查詢優化,因此它不使用子查詢。我這可以使用連接來完成,但我不知道如何。
SELECT name, lastname, mail
FROM users
WHERE user_id IN (
SELECT user_id
FROM sales
WHERE sale_date < '2009-01-01'
AND sale_total >100
AND sale_status =4
)
AND user_id NOT IN (
SELECT user_id
FROM sales
WHERE sale_date >= '2009-01-01'
)
如果第二個查詢需要的用戶沒有銷售記錄,那麼sale_date> ='2009-01-01'怎麼辦? – MStodd 2010-09-18 16:29:22
這就是我現在正在考慮的問題......這部分可能無法通過連接實現。 – 2010-09-18 16:36:29
感謝您的回覆!是的,我確實希望在2009-01-01之後沒有任何銷售記錄的用戶。任何想法如何避免這兩個子查詢仍然是受歡迎的。 – infrared 2010-09-18 16:48:15