在编辑一些查询以添加没有值的列的替代方法时,我不小心写了这样的东西(这里是简单的版本):
SELECT id, (SELECT name) FROM t
令我惊讶的是,MySQL没有抛出任何错误,但完成了查询,给出了我的预期结果(name
列值).我试图找到有关它的任何文档,但没有成功.
这是SQL标准还是MySQL专业?
我可以确定此语法的结果实际上是来自同一(外部)表的列值吗?扩展版本是这样的:
SELECT id, (SELECT name FROM t AS t1 where t1.id=t2.id) FROM t AS t2
但EXPLAIN
报告No tables used
中Extra
列前的版本,我认为这是非常好的.
这是SqlFiddle上的一个简单的小提琴(它为我保留时间,我希望你有更好的运气).
澄清:我知道子查询,但我总是编写子查询(相关或不相关),暗示了一个表可供选择,因此在执行计划中引起了额外的步骤; 我的问题是这个语法及其给出的结果,在MySQL中似乎没有任何返回预期值.