2011-01-13 151 views
1

我有這個疑問:SQL查詢問題

select 
    l.lead_id, l.lead_date_received, 
    TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, 
    s.admin_id, a.name, a.email 
from 
    leads l 
     inner join sales_emails s on l.lead_id = s.lead_id 
     inner join admin a on a.admin_id = s.admin_id 
where 
    not exists (select 1 from comments c where l.lead_id = c.lead_id) 
order by 
    minutes, l.lead_date_received desc 

現在我要忍受條件WHERE條款一樣minutes > 30。但是,如您所見,minutes僅出現在SELECT子句中,而不出現在FROM子句或子查詢中,這意味着我的條件(如minutes > 30)將不會在WHERE子句中被識別。

我該如何解決這個問題?由於

+1

任我思念的東西明顯here..butü可以不加`而且TIMESTAMPDIFF(MINUTE,l.lead_date_received,NOW()) > 30`到你的where子句? – InSane 2011-01-13 07:15:23

+0

@InSane:你說得對,我錯過了這一點:(謝謝 – Sarfraz 2011-01-13 07:27:05

回答

2
SELECT l.lead_id, l.lead_date_received, TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, s.admin_id, 
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s 
ON  l.lead_id = s.lead_id 
INNER JOIN admin a 
ON  a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT 1 FROM comments c WHERE l.lead_id = c.lead_id) 
AND TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) > 30 
ORDER BY minutes, l.lead_date_received DESC 

或添加其他查詢:

SELECT * 
from 
(
    SELECT l.lead_id, l.lead_date_received, TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, s.admin_id, 
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s 
ON  l.lead_id = s.lead_id 
INNER JOIN admin a 
ON  a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT 1 FROM comments c WHERE l.lead_id = c.lead_id) 
ORDER BY minutes, l.lead_date_received DESC 
) 
Where minutes > 30 
1
WITH Something as ( 
SELECT l.lead_id, 
     l.lead_date_received, 
     TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, 
     s.admin_id,   
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s ON l.lead_id = s.lead_id 
INNER JOIN admin a ON a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT top 1 1 FROM comments c WHERE l.lead_id = c.lead_id) 
) 
Select * FROM Something 
WHERE minutes > 30 
ORDER BY minutes, lead_date_received DESC