什么人会想到这个查询?表名可以用作别名吗?
SELECT * FROM ta LEFT JOIN
(SELECT * FROM tb WHERE tb.end > 10000) AS tb
ON ta.id = tb.id
可以使用表名(“tb”)作为别名还是存在一些看不见的后果?
原因:我有静态方法来映射的ResultSet对象到其使用的表名前缀。单独留下这些方法会很好。
什么人会想到这个查询?表名可以用作别名吗?
SELECT * FROM ta LEFT JOIN
(SELECT * FROM tb WHERE tb.end > 10000) AS tb
ON ta.id = tb.id
可以使用表名(“tb”)作为别名还是存在一些看不见的后果?
原因:我有静态方法来映射的ResultSet对象到其使用的表名前缀。单独留下这些方法会很好。
是的,你可以使用任何别名,只要别名不与其他别名冲突(不包括别名表是给他们的名字别名)。这适用于单个查询范围。在你的查询中,你有2个作用域:一个用于外部查询,另一个用于内部查询,因此即使在两个作用域中出现相同的别名,也不应该有冲突。
是这是完全正常使用别名作为表名。
您的查询看起来不错,但你为什么不使用一个简单的LEFT JOIN
SELECT ta.*
FROM ta
LEFT JOIN tb ON ta.id = tb.id
WHERE tb.end > 10000
我上面的查询未完成, – inmyth
这是蛮好用的。但是'SELECT * FROM tb WHERE tb.end> 10000'是否返回单列? –