我試圖運行下面的查詢,但得到一個錯誤:在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...
我如何寫這個查詢?
我試圖運行下面的查詢,但得到一個錯誤:在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...
我如何寫這個查詢?
您可以使用NOT EXISTS
子句。
SELECT S
FROM ST
WHERE NOT EXISTS (
SELECT *
FROM L
WHERE L.Wh = ST.S
)
完美。謝謝! – CodeGuy
您必須在子查詢中使用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)
嘗試這樣
select s from st
where (select count(*) from L where l.wh=s)=0
另一種選擇是使用join
:
select S from St
left join L on St.S = L.Wh
where L.Wh is null
工作例如:http://sqlfiddle.com/#!2/d3c23/2
就個人而言,我通常喜歡連接,但另一種選擇是使用not in
:
select S from St
where S not in (select Wh from L)
您最好通過詞語*解釋您需要的*,因爲現在可以解答「我該如何解決這個問題?」的一個可能答案。是 - 「用SELECT S FROM St替換它」 – zerkms
@zerkms我明白'code'而不是普通的'English',因爲英語不是我的母語:-) –
@Mithun:確實有可能。但問題是 - 通常錯誤的查詢不是很有用(甚至可能導致錯誤的答案),因此最好添加文本描述。我希望OP會在下一次做到這一點。 PS:它甚至不接近我的母語;-) – zerkms