SQL:WHERE子句的问题
上面的查询生成错误 查找错误-SQL Server数据库错误:关键字“内部”附近的语法不正确SQL:WHERE子句的问题,sql,sql-server,Sql,Sql Server,上面的查询生成错误 查找错误-SQL Server数据库错误:关键字“内部”附近的语法不正确 如果我删除WHERE子句,它就可以正常工作。我不确定语法是否有问题?如果联接后需要执行条件,请尝试将其移到末尾: SELECT DISTINCT Interests.Interest_name, Impressions.Count FROM Interests WHERE Vertical_name = 'Retail' INNER JOIN Impressions ON Interests.In
如果我删除
WHERE
子句,它就可以正常工作。我不确定语法是否有问题?如果联接后需要执行
条件,请尝试将其移到末尾:
SELECT DISTINCT Interests.Interest_name, Impressions.Count
FROM Interests
WHERE Vertical_name = 'Retail'
INNER JOIN Impressions ON Interests.Interest_Name = Impressions.Interest_Name;
语法是错误的。您必须将
移动到加入后的位置
例如:
SELECT DISTINCT Interests.Interest_name,Impressions.Count FROM Interests
Inner Join Impressions ON Interests.Interest_Name = Impressions.Interest_Name
WHERE Vertical_name = 'Retail';
如果您试图预筛选您的表兴趣
,您可以这样做:
SELECT DISTINCT Interests.Interest_name,Impressions.Count
FROM Interests
INNER JOIN Impressions
ON Interests.Interest_Name = Impressions.Interest_Name
WHERE Vertical_name = 'Retail';
毕竟只是一个暗示。我建议你在每张桌子上都使用别名。如果您需要重命名表格,它将提高阅读效率并节省您的时间。where
位于from
子句之后。而join
是from
子句的一部分
使用别名,您的查询将更易于编写和读取:
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;
如果不需要独立的
,则应将其删除。这只会影响性能
事实上,编写此查询的更好方法是使用相关子查询:
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';
这假设Vertical\u Name
在兴趣中。否则,它将进入子查询。where子句应该位于连接之后。投票关闭是一个简单的语法错误。
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';