Tengo dos tablas. Quiero unirme a ellos de forma que solo se registre un registro en la tabla correcta para cada registro en la tabla de la izquierda. He incluido un ejemplo a continuación. Me gustaría evitar las subconsultas y las tablas temporales ya que los datos reales son de 4M filas. Tampoco me importa qué registro en la tabla de la derecha coincida, siempre que coincidan uno o ninguno. ¡Gracias!Ayuda de consulta de MySQL JOIN: solo devuelve una fila de la tabla de la derecha para cada fila en la tabla de la izquierda
tabla de usuarios:
-------------
| id | name |
-------------
| 1 | mike |
| 2 | john |
| 3 | bill |
-------------
transacciones de mesa:
---------------
| uid | spent |
---------------
| 1 | 5.00 |
| 1 | 5.00 |
| 2 | 5.00 |
| 3 | 5.00 |
| 3 | 10.00 |
---------------
salida esperada:
---------------------
| id | name | spent |
---------------------
| 1 | mike | 5.00 |
| 2 | john | 5.00 |
| 3 | bill | 5.00 |
---------------------
¿Por qué todos se agrupan por user.id (una clave principal) y user.name? Después de agrupar por una clave principal, realmente no necesita nada más. ¿Me estoy perdiendo algo, o todos estamos copiando @OMG Ponies? – TheJacobTaylor
@TheJacobTaylor: SQL estándar requiere que incluya columnas no incluidas en los agregados en GROUP BY. El estándar ANSI admite que no se definan todas las columnas si se trata de un subconjunto innecesario; MySQL lo admite, pero no funcionará en la mayoría de las demás bases de datos. –
@TheJacobTaylor: MySQL no requiere todas las columnas de agrupamiento; casi todos los demás DBMS lo hacen, al igual que el estándar SQL. –