使用join、distinct、count和where的复杂sql请求

iibxawm4  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(421)

我有两个表:circuit(idŠcircuit,distance)和circuitŠlanguage(idŠcircuitŠlanguage,ŠidŠcircuit,language,title)。我想得到两种以上语言的电路表。

gab6jxml

gab6jxml1#

你需要使用 group byhaving 比如:

select c.id_circuit, count(cl.id_curcuit_language) as RecCount
from circuit c
inner join circuit_langue cl on c.id_circuit = cl.#id_circuit
group by c.id_circuit
having count(cl.id_curcuit_language) > 2
cs7cruho

cs7cruho2#

join 有必要:

select cl.id_circuit
from circuit_langue cl
group by cl.id_circuit
having count(*) >= 3;

这假设表中没有重复项。如果有,那么你想用 count(distinct language) >= 3 .

qmelpv7a

qmelpv7a3#

你可以试试这个(甲骨文风格):

select circuit.*
from circuit,
    (select id_circuit
    from circuit_langue
    group by id_circuit
    having count(*) >2 ) lang
where circuit.id_circuit = lang.id_circuit;

这个查询提供了circuits表中的整行,所以您可以访问任何列。另一方面,如果您只需要“id\u circuit”列,那么gordon linoff的答案是最好的。

相关问题