大家好,我有一个问题,我只能像我一样工作......
我想要显示新闻和评论(2个表),我想要随机输出而不是相同的输出
这是我的查询我真的希望有人可以解释我做错了什么
SELECT
anmeldelser.billed_sti ,
anmeldelser.overskrift ,
anmeldelser.indhold ,
anmeldelser.id ,
anmeldelser.godkendt
FROM
anmeldelser
LIMIT 0,6
UNION ALL
SELECT
nyheder.id ,
nyheder.billed_sti ,
nyheder.overskrift ,
nyheder.indhold ,
nyheder.godkendt
FROM nyheder
ORDER BY rand() LIMIT 0,6
答案 0 :(得分:0)
首先,看起来两个SELECT
语句的列顺序与UNION所需的列顺序不匹配。
以下是什么回报?
SELECT
anmeldelser.billed_sti ,
anmeldelser.overskrift ,
anmeldelser.indhold ,
anmeldelser.id ,
anmeldelser.godkendt
FROM
anmeldelser
LIMIT 0,6
UNION ALL
SELECT
nyheder.billed_sti ,
nyheder.overskrift ,
nyheder.indhold ,
nyheder.id ,
nyheder.godkendt
FROM nyheder
ORDER BY rand() LIMIT 0,6
(您使用的是哪个RDBMS?您拥有的SQL对Sybase无效,但可能会有一些技术取决于您使用的SQL的'风味')
答案 1 :(得分:0)
问题是第一个表没有选择随机元素
SELECT temp.* FROM
(
SELECT
anmeldelser.id ,
anmeldelser.billed_sti ,
anmeldelser.overskrift ,
anmeldelser.indhold ,
anmeldelser.godkendt,
'News' as artType
FROM anmeldelser
UNION
SELECT
nyheder.id ,
nyheder.billed_sti ,
nyheder.overskrift ,
nyheder.indhold ,
nyheder.godkendt,
'Review' as artType
FROM nyheder
) temp
ORDER BY rand() LIMIT 0,6
答案 2 :(得分:0)
由于RAND()仅出现在ORDER BY子句中,它不仅会为整个查询评估一次,而且每行不会评估一次吗?