SELECT bar.*, baz.foo FROM bar LEFT JOIN baz
如果我在bar中有一个名为foo的列,那么标准的SQL行为是什么?结果集是否只包含来自baz的foo或......?
答案 0 :(得分:1)
它将包含两个表中的列foo
。
由于您的问题被标记为“标准”,我建议在结果集中为2列使用明确的别名。
答案 1 :(得分:0)
它将包含两个名为foo
的输出列;一个包含表bar
中的值和一个表baz
中的值。
如果你进行自然连接,那么foo
列将在连接中使用,并且输出中只会出现一个值 - 但是你做了一个左外连接,而不是一个自然连接。
您需要使用ON子句或USING子句指定连接条件(但不是每个DBMS都支持USING)。
答案 2 :(得分:0)
它将包含2 x foo列。这不是SQL的问题,但它往往会破坏客户端代码。只需别名
SELECT bar.*, baz.foo AS foo2...
SELECT bar.*, foo2 = baz.foo...
虽然我们处于标准状态,但SELECT *
并不是一个好习惯:使用命名列。在其他问题中已经讨论过死亡......