3
我要定义一个SQL命令是这样的:使用UNION与续集
SELECT * FROM WOMAN
UNION
SELECT * FROM MEN
我试图与红宝石+续集以下代码序列定义该:
require 'sequel'
DB = Sequel::Database.new()
sel = DB[:women].union(DB[:men])
puts sel.sql
结果是(我做了,结果一些漂亮的打印):
SELECT * FROM (
SELECT * FROM `women`
UNION
SELECT * FROM `men`
) AS 't1'
有一个额外的(多余的?)SELECT
。
如果我这样定义的代码示例
sel = DB[:women].union(DB[:men]).union(DB[:girls]).union(DB[:boys])
puts sel.sql
在多个UNION
我得到更多的多余进行选择。
SELECT * FROM (
SELECT * FROM (
SELECT * FROM (
SELECT * FROM `women`
UNION
SELECT * FROM `men`
) AS 't1'
UNION
SELECT * FROM `girls`
) AS 't1'
UNION
SELECT * FROM `boys`
) AS 't1'
我发现没有问题,直到现在,结果似乎是一样的。
我的问题:
- 是否有额外的
select
有原因的(续集内部程序旁) - 我可以避开选择?
- 我可以得到这个额外选择的问题吗? (任何性能问题?)
谢谢。我总是感到惊讶,续集有多好 - 我总是从文档中错过它(我确信我看过联盟文档)。 – knut