SQL 查询 JOIN 显示为灰色,第 3 个 table 为空白
SQL query JOIN is greyed out and 3rd table is blank
我有这个SQL查询:
SELECT a.NAME
,(CASE
WHEN a.TIME = b.schedule
THEN 0
ELSE 1
END ) AS number
INTO C
FROM a
INNER JOIN b
ON a.NAME = b.NAME;
它根据需要创建第 3 个 table,但 table 是空的,我向您保证,A 的时间列与 B 的所有计划列不匹配。
我注意到 JOIN 变灰了,我有理由相信这是导致问题的原因,但是我是否遗漏了任何让这个查询按需要运行的东西?在此先感谢您的帮助。
您在评论中提到该查询适用于 left join
。这意味着当您尝试执行 inner join
时,您的 a.Name = b.Name
条件失败了。
在这种情况下,如果有一个前导 space,您需要弄清楚为什么它们不能适当地相互匹配。
根据您的评论,您的列不匹配,因此您需要进行一些有创意的查询以获得您想要的结果(假设您无法修复数据)。这很丑陋,也不是一个很好的方法,但你可以尝试在字段的开头进行匹配,直到 semi-colon:
SELECT a.NAME
,(CASE
WHEN a.TIME = b.schedule
THEN 0
ELSE 1
END ) AS number
INTO C
FROM a
INNER JOIN b
on substring(a.Name,1,CHARINDEX(';',a.Name)) = substring(b.Name,1,CHARINDEX(';',b.Name))
我有这个SQL查询:
SELECT a.NAME
,(CASE
WHEN a.TIME = b.schedule
THEN 0
ELSE 1
END ) AS number
INTO C
FROM a
INNER JOIN b
ON a.NAME = b.NAME;
它根据需要创建第 3 个 table,但 table 是空的,我向您保证,A 的时间列与 B 的所有计划列不匹配。
我注意到 JOIN 变灰了,我有理由相信这是导致问题的原因,但是我是否遗漏了任何让这个查询按需要运行的东西?在此先感谢您的帮助。
您在评论中提到该查询适用于 left join
。这意味着当您尝试执行 inner join
时,您的 a.Name = b.Name
条件失败了。
在这种情况下,如果有一个前导 space,您需要弄清楚为什么它们不能适当地相互匹配。
根据您的评论,您的列不匹配,因此您需要进行一些有创意的查询以获得您想要的结果(假设您无法修复数据)。这很丑陋,也不是一个很好的方法,但你可以尝试在字段的开头进行匹配,直到 semi-colon:
SELECT a.NAME
,(CASE
WHEN a.TIME = b.schedule
THEN 0
ELSE 1
END ) AS number
INTO C
FROM a
INNER JOIN b
on substring(a.Name,1,CHARINDEX(';',a.Name)) = substring(b.Name,1,CHARINDEX(';',b.Name))