2011-05-11 41 views
0

這段代碼有什麼問題?我不斷收到ERROR 1064 (42000): You have an error in your SQL syntaxMySQL不存在的地方

SELECT clientReport.id 
    WHERE clientReport.rowNumber NOT EXISTS (
    SELECT clientReport.rowNumber FROM report02, clientReport 
     WHERE report02.id=clientReport.id); 

回答

2

我假設你想要做的事,如:

SELECT clientReport.id 
FROM clientReport 
LEFT JOIN report02 ON(report02.id = clientReport.id) 
WHERE report02.id is null; 

這將返回從CLIENTREPORT其中有report02沒有相應的條目中的所有標識。

另一種可能是:

SELECT clientReport.id FROM clientReport 
WHERE clientReport.rowNumber NOT IN (
    SELECT clientReport.rowNumber 
    FROM report02, clientReport 
    WHERE report02.id=clientReport.id); 
1

你對你的第一個SELECT語句缺少一個FROM

SELECT clientReport.id 
    FROM clientReport '<--- need this 
    WHERE clientReport.rowNumber NOT EXISTS (
    SELECT clientReport.rowNumber FROM report02, clientReport 
     WHERE report02.id=clientReport.id); 
1

什麼是完整的錯誤消息的MySQL服務器返回?你應該得到一個錯誤信息,如下面:

You have an error in your SQL syntax near `NOT EXISTS` 

你也應該考慮使用右連接,而不是一個子查詢選擇,作爲右連接似乎是你在這種情況下,想要的東西。

編輯:此外,由於子查詢運行時觀察到的性能問題,建議使用非常有選擇性的JOIN代替,即可以這樣說,在MySQL常規查詢中再次使用子查詢在子查詢中實現LIMIT的使用。這會大大降低性能。

1

您忘記了在主查詢中添加子句。

SELECT clientReport.id from clientReport 
    WHERE clientReport.rowNumber NOT IN (
    SELECT clientReport.rowNumber FROM report02, clientReport 
     WHERE report02.id=clientReport.id); 
1

你可能想NOT IN而不是NOT EXISTS