我想做一个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
它不起作用。系统崩溃了。但我的参考书说这是做到这一点的方法。请帮忙。
答案 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.然后,您可以更改第一个选择语句。