Dav*_*art 0 mysql sql sql-server-2005
我需要执行这样的查询:
SELECT *,
(SELECT Table1.Column
FROM Table1
INNER JOIN Table2 ON Table1.Table2Id = Table2.Id
) as tmp
FROM Table2 WHERE tmp = 1
Run Code Online (Sandbox Code Playgroud)
我知道我可以采取一种解决方法,但我想知道这种语法是否可行,因为它(我认为)在Mysql中.
您发布的查询将无法在sql server上运行,因为select子句中的子查询可能会返回多行.我不知道MySQL会如何对待它,但是从我正在阅读的内容中,如果子查询返回任何重复项,MySQL也会产生错误.我知道SQL Server甚至不会编译它.
不同之处在于MySQL至少会尝试运行查询,如果你非常幸运(Table2Id在Table1中是唯一的)它将会成功.更可能的是会返回错误.SQL Server根本不会尝试运行它.
这是一个应该在任一系统上运行的查询,如果表1中的Table2Id不唯一,则不会导致错误.它会返回在这种情况下,当唯一的区别是Table1.Column价值的源泉"重复"行:
SELECT Table2.*, Table1.Column AS tmp
FROM Table1
INNER JOIN Table2 ON Table1.Table2Id = Table2.Id
WHERE Table1.Column = 1
Run Code Online (Sandbox Code Playgroud)
也许如果你分享了你想要实现的目标,我们可以帮助你编写一个查询来完成它.