[英]SQL Join with “AND” + “OR” statement
我在處理此SQL語句時遇到麻煩。 我試圖將結果限制為ID為“ 25”和“ 87”的玩家。 查詢沒有錯誤(我正在通過此查詢獲取每個PID)這是該語句。
SELECT Rosters.PID, SUM( Rosters.Goals ) Goals, SUM( Rosters.Assists ) Assists, SUM( Rosters.PIM ) PIM, Rosters.TID, Players.pid, Players.firstname, Players.lastname,
SUM((Rosters.Goals + Rosters.Assists)) AS Points, Teams.tid, Teams.teamname
FROM Rosters
INNER JOIN Players
ON Rosters.PID = Players.pid
INNER JOIN Teams
ON Rosters.TID = Teams.tid
WHERE ((Rosters.TID BETWEEN 9 AND 16) AND (Players.pid = 25 OR 87))
GROUP BY
Players.pid
ORDER BY Points DESC
我幾乎可以肯定這是我對SQL缺乏了解的原因,但是W3C學校沒有提供更復雜的解決方案,並且我查找的Stack線程已經相當本地化。
您在Players.pid
周圍的狀況有Players.pid
。
它應該是
(Players.pid = 25 OR Players.pid = 87)
邏輯OR
運算符結合了兩個邏輯條件。 Players.pid = 25
是有效條件,其評估結果為布爾值true
或false
。 但是87
絕對不評估布爾值。
只需將代碼的一部分從Players.pid = 25 OR 87
Players.pid = 25 OR Players.pid = 87
為Players.pid = 25 OR Players.pid = 87
或者,您可以使用IN構造將Players.pid與可能的值列表進行匹配(請注意,不再需要外部花括號):
WHERE Players.pid IN (25, 87) AND Rosters.TID BETWEEN 9 AND 16
另外,如果您認為Players.pid會增加以檢查條件,則可以使用IN操作並像這樣使用
AND Players.pid IN (25,87) // You can add here more id to check
代替您的代碼
AND (Players.pid = 25 OR 87)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.