使用join,distinct,count和where的复杂SQL请求

时间:2018-11-11 19:36:09

标签: mysql sql oracle

我有2个表:circuit(id_circuit,distance)和circuit_langue(id_circuit_language,#id_circuit,语言,标题)。 我想获取具有两种以上语言的电路列表。

3 个答案:

答案 0 :(得分:1)

不需要join

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

这假定表中没有重复项。如果有,那么您要使用count(distinct language) >= 3

答案 1 :(得分:0)

您需要将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

答案 2 :(得分:0)

您可以尝试以下(oracle风格):

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_circuit”列,那么Gordon Linoff的答案是最好的。