[英]SQL: Issue with WHERE Clause
SELECT DISTINCT Interests.Interest_name, Impressions.Count
FROM Interests
WHERE Vertical_name = 'Retail'
INNER JOIN Impressions ON Interests.Interest_Name = Impressions.Interest_Name;
上述查詢產生錯誤
查找錯誤 - SQL Server 數據庫錯誤:關鍵字“Inner”附近的語法不正確。
如果我刪除WHERE
子句,它就可以正常工作。 我不確定語法是否有問題?
WHERE
條件需要在 joins 之后去,嘗試將其移動到最后:
SELECT DISTINCT Interests.Interest_name,Impressions.Count FROM Interests
Inner Join Impressions ON Interests.Interest_Name = Impressions.Interest_Name
WHERE Vertical_name = 'Retail';
那么語法是錯誤的。 您必須在JOIN
后移動WHERE
例如:
SELECT DISTINCT Interests.Interest_name,Impressions.Count
FROM Interests
INNER JOIN Impressions
ON Interests.Interest_Name = Impressions.Interest_Name
WHERE Vertical_name = 'Retail';
如果您嘗試預先過濾您的表Interests
您可以這樣做:
SELECT DISTINCT Interests.Interest_name,Impressions.Count
FROM (
SELECT *
FROM Interests
WHERE Vertical_name = 'Retail'
) as Interests
INNER JOIN Impressions
ON Interests.Interest_Name = Impressions.Interest_Name;
畢竟只是一個提示。 我建議您為每個表使用別名。 如果您需要重命名表格,它將改善閱讀並為您節省。
from
子句后面的where
。 join
是from
子句的一部分。
您的查詢使用別名更容易編寫和閱讀:
SELECT DISTINCT i.Interest_name, i.Count
FROM Interests i Inner Join
Impressions im
ON i.Interest_Name = im.Interest_Name;
WHERE Vertical_name = 'Retail';
如果您不需要DISTINCT
,那么您應該將其刪除。 它只會損害性能。
實際上,編寫此查詢的更好方法是使用相關子查詢:
SELECT DISTINCT i.Interest_name, i.Count
FROM Interests i
WHERE EXISTS (SELECT 1
FROM Impressions im
WHERE i.Interest_Name = im.Interest_Name
)
WHERE i.Vertical_name = 'Retail';
這假設Vertical_Name
在Interests
。 否則,它將進入子查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.