SQL连接查询:多个表的问题

时间:2010-11-08 15:26:14

标签: sql join

我想做一个SQL连接查询。我有三个表_A,_B,_C,比方说。每个表都有一个名为“level”的列,其中一些项在此列中具有值1,2,3。

首先,我只想从表_A中获得level = 1的项目,所以写道:

SELECT * FROM _A WHERE level = "1" ORDER BY RANDOM() LIMIT 1

工作得很好。

现在,我想从三个表中的任何一个表中选择level = 1的随机项。 我写道:

SELECT * FROM _A, _B, _C WHERE level = "1" ORDER BY RANDOM() LIMIT 1

它不起作用。系统崩溃了。但我的参考书说这是做到这一点的方法。请帮忙。

2 个答案:

答案 0 :(得分:2)

SELECT *
FROM (
    SELECT * FROM _A WHERE level = "1"
    UNION ALL
    SELECT * FROM _B WHERE level = "1"
    UNION ALL
    SELECT * FROM _C WHERE level = "1"
)
ORDER BY RANDOM() LIMIT 1 

答案 1 :(得分:0)

我同意redfilter。但是,为什么你需要三个表而不是在表A中有一个额外的列(ABC char(3))?然后,表_B中的每一行在此列中都有一个B,而在表_C中的每一行在此列中都有一个C.然后,您可以更改第一个选择语句。