事情就是这样。我有 3 个表,我正在做这个查询:
select t.nomefile, t.tipo_nome, t.ordine
from
(select nomefile, tipo_nome, categorie.ordine
from t_gallerie_immagini_new as immagini
join t_gallerie_new as collezioni on collezioni.id=immagini.id_ref
join t_gallerie_tipi as categorie on collezioni.type=categorie.id
order by RAND()
) as t
group by t.tipo_nome
order by t.ordine
它应用于 3 个表,都在关系 1-N 中,需要将它们连接起来,然后从更高级别表中的每个不同结果中获取 1 个随机结果。这个查询工作得很好,问题是我被要求重写这个查询USING ONLY ONE SELECT。我已经有了另一种方法,只有一个选择,问题是根据 SQL 语法,GROUP BY 必须在 ORDER BY 之前,所以当你已经只有第一条记录时,随机排序是没有意义的更高级别表中的值。
有人知道如何仅使用一个选择来编写此查询吗?