Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 左外部联接显示不正确的语法_Sql_Sql Server - Fatal编程技术网

Sql 左外部联接显示不正确的语法

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

我正在尝试做一个简单的左外连接

内部查询工作正常。但一旦我做了一个左外连接,我就会得到一个错误,说“T1附近的语法不正确”和“T2附近的语法不正确”

我不知道我哪里错了。我是否在内部查询中包含不应包含的where条件

(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版本是什么?