Sql 左外部联接显示不正确的语法
我正在尝试做一个简单的左外连接 内部查询工作正常。但一旦我做了一个左外连接,我就会得到一个错误,说“T1附近的语法不正确”和“T2附近的语法不正确” 我不知道我哪里错了。我是否在内部查询中包含不应包含的where条件Sql 左外部联接显示不正确的语法,sql,sql-server,Sql,Sql Server,我正在尝试做一个简单的左外连接 内部查询工作正常。但一旦我做了一个左外连接,我就会得到一个错误,说“T1附近的语法不正确”和“T2附近的语法不正确” 我不知道我哪里错了。我是否在内部查询中包含不应包含的where条件 (SELECT * FROM Table1 WHERE MMID IN (SELECT MAX(MMID) FROM Table1 WHERE (DateEntered) >= '2015-04-15 15:17:0
(SELECT *
FROM Table1
WHERE MMID IN
(SELECT MAX(MMID)
FROM Table1
WHERE (DateEntered) >= '2015-04-15 15:17:03.693'
GROUP BY GID, MID)
) T1
LEFT OUTER JOIN
(SELECT *
FROM Table1
WHERE (DateEntered) < '2015-04-15 15:17:03.693') T2 ON T1.GID = T2.GID AND T1.MID = T2.MID
WHERE
T1.Value <> T2.Value
如果这是您的实际查询,则缺少外部选择:
SELECT *
FROM (
SELECT *
FROM Table1
WHERE MMID IN (
SELECT MAX(MMID)
FROM Table1
WHERE (DateEntered) >= '2015-04-15 15:17:03.693'
GROUP BY GID
,MID
)
) T1
LEFT JOIN (
SELECT *
FROM Table1
WHERE (DateEntered) < '2015-04-15 15:17:03.693'
) T2
ON T1.GID = T2.GID
AND T1.MID = T2.MID
WHERE T1.Value <> T2.Value
语法应归结为:
Select []
From A
Join B
on []
您缺少第一部分,因为您的第一次选择实际上是T1子查询的一部分。在第一个括号之前添加另一个Select*from可以解决语法问题
或者,第一部分不需要是子查询:
SELECT * FROM Table1 T1
left outer join
(
Select * FROM Table1
where (DateEntered) < '2015-04-15 15:17:03.693'
) T2
on T1.GID = T2.GID and T1.MID = T2.MID
where T1.Value <> T2.Value
and T1.MMID IN
(
Select MAX(MMID) FROM Table1
where (DateEntered) >= '2015-04-15 15:17:03.693'
group by GID, MID
)
您的SQLServer版本是什么?