2012-10-25 24 views
-1

我試圖運行下面的查詢,但得到一個錯誤:在SQL中使用計數()= 0

select S 
from St 
where count(

    select * 
    from L 
    where L.Wh = S 

) = 0 

我得到的錯誤:

error code 1064, SQL state 42000: You have an error in your SQL syntax...

我如何寫這個查詢?

+4

您最好通過詞語*解釋您需要的*,因爲現在可以解答「我該如何解決這個問題?」的一個可能答案。是 - 「用SELECT S FROM St替換它」 – zerkms

+0

@zerkms我明白'code'而不是普通的'English',因爲英語不是我的母語:-) –

+0

@Mithun:確實有可能。但問題是 - 通常錯誤的查詢不是很有用(甚至可能導致錯誤的答案),因此最好添加文本描述。我希望OP會在下一次做到這一點。 PS:它甚至不接近我的母語;-) – zerkms

回答

6

您可以使用NOT EXISTS子句。

SELECT S 
FROM ST 
WHERE NOT EXISTS ( 
    SELECT * 
    FROM L 
    WHERE L.Wh = ST.S 
) 
+0

完美。謝謝! – CodeGuy

6

您必須在子查詢中使用COUNT聚合函數,以便您的子查詢返回單個結果。

select S 
from St 
where (select COUNT(*) 
     from L 
     where L.Wh = St.S 
    ) = 0 

如果你想在「ST」沒有任何記錄在「L」誰選擇的所有記錄,您還可以使用NOT EXISTS()功能:

SELECT S 
FROM St 
WHERE NOT EXISTS (SELECT 1 FROM L WHERE L.Wh = St.S) 
+0

現在我得到「未知列S在'where'子句 – CodeGuy

+0

您可能必須添加表名作爲前綴;否則他可能不知道從哪裏得到」 S「from。我更新了我的答案。 – Styxxy

+0

完美,謝謝! – CodeGuy

2

嘗試這樣

select s from st 
    where (select count(*) from L where l.wh=s)=0