显示重复值子查询mysql
我有一个带有子查询的mySQL查询。 此子查询:显示重复值子查询mysql,mysql,duplicates,subquery,Mysql,Duplicates,Subquery,我有一个带有子查询的mySQL查询。 此子查询: (SELECT r.tlf_reserva FROM eventos e INNER JOIN Reservas r INNER JOIN viajes v WHERE r.id_viaje=v.id_propia AND e.id=1) 返回两个值,但查询: SELECT nombre FROM tblRegistration WHERE tlf= ALL( SELECT r.tlf
(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia AND e.id=1)
返回两个值,但查询:
SELECT nombre
FROM tblRegistration
WHERE tlf= ALL(
SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)
返回一个值
这两个值是重复的,但我想在第二个查询中显示它们否,因为这两个值相同(重复),并且您选择的是单个字段;将只显示一个事件。如果您仍然强烈希望显示,那么可以使用
UNION-ALL
like
SELECT nombre
FROM tblRegistration
WHERE tlf = ALL(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)
UNION ALL
SELECT nombre
FROM tblRegistration
WHERE tlf = ALL(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)
我找到了解决方案,以下是正确的查询:
SELECT nombre FROM tblRegistration a INNER JOIN(SELECT r.tlf_reserva FROM eventos e INNER JOIN Reservas r INNER JOIN viajes v WHERE r.id_viaje=v.id_propia AND e.id=1) b where a.tlf=b.tlf_reserva
使用联接操作
SELECT t.nombre
FROM tblRegistration t
JOIN ( SELECT r.tlf_reserva
FROM eventos e
CROSS
JOIN Reservas r
JOIN viajes v
ON v.id_propia = r.id_viaje
WHERE e.id=1
) v
ON t.tlf = v.tlf_reserva
最佳实践是限定所有列引用,并将连接谓词放在ON子句中,而不是放在WHERE中