Tengo una tabla SQL, con dos columnas [foto,persona]. Voy a través de cada foto, digamos foto uno contiene Ben y Harry, así que inserto dos filas.
Mi mesa ahora se ve así.
Photo, Person
1, Ben
1, Harry
Quiero ser capaz de seleccionar todas las fotos que contienen Ben y Harry en la misma imagen (Pero no se limita sólo a Ben y Harry, si otros están en la imagen, está bien). Intenté buscar instrucciones de ejemplo, pero no puedo obtener el texto de la consulta que quiero. ¿Cómo hago esto?
2 respuestas
Agrupe por foto y establezca la condición en la cláusula HAVING:
select photo
from tablename
group by photo
having sum(person in ('Ben', 'Harry')) = 2
O:
select photo
from tablename
where person in ('Ben', 'Harry')
group by photo
having count(*) = 2
¿Así?
Select distinct photo from your_table where person in ("Ben", "Harry")
where person in ("Ben", "Harry")
- obtiene todas las filas donde la persona es Ben o Harry
DISTINCT
- elimina fotos duplicadas de los resultados
Actualizar:
SELECT A.photo FROM your_table A WHERE A.person = "Ben" AND exists (SELECT 1 FROM your_table B where A.photo = B.photo AND A.person = "Harry")
Aquí estoy seleccionando todas las filas con Ben y usando una subconsulta para limitar los resultados a filas con Harry también.
Nuevas preguntas
mysql
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) gratuito y de código abierto que utiliza lenguaje de consulta estructurado (SQL). NO UTILICE esta etiqueta para otras bases de datos como SQL Server, SQLite, etc. Estas son bases de datos diferentes que utilizan sus propios dialectos de SQL para administrar los datos.