Tengo 2 mesas. tbl_names
y tbl_section
que tiene tanto el id
campo en ellos. ¿Cómo hago para seleccionar el id
campo, porque siempre obtengo este error:
1052: Column 'id' in field list is ambiguous
Aquí está mi consulta:
SELECT id, name, section
FROM tbl_names, tbl_section
WHERE tbl_names.id = tbl_section.id
Podría seleccionar todos los campos y evitar el error. Pero eso sería un desperdicio de rendimiento. ¿Qué tengo que hacer?
INNER JOIN
que está 'depreciado' desde que se introdujo SQL-92NATURAL JOIN
.En su
SELECT
declaración, debe anteponer su identificación con la tabla de la que desea elegirla.O
fuente
id
campos; el OP dice "simplemente seleccione todos los campos y evite el error". Y no voto por la sintaxis ANSI-89.Lo haría proporcionando un nombre completo, por ejemplo:
Lo que le daría la identificación de tbl_names
fuente
FROM
cláusula...FROM tbl_names tbl_names, tbl_section tbl_section WHERE...
; eso es lo que está haciendo el analizador para generar una variable de rango.La solución más simple es unir con en
USING
lugar deON
. De esa manera, la base de datos "sabe" que ambasid
columnas son realmente iguales y no se preocupará por eso:Si
id
es el único nombre de columna común entbl_names
ytbl_section
, incluso puede usar unNATURAL JOIN
:Ver también: https://dev.mysql.com/doc/refman/5.7/en/join.html
fuente
Lo que probablemente quiera hacer aquí es usar el operador de unión de esta manera:
Aquí están los documentos https://dev.mysql.com/doc/refman/5.0/en/union.html
fuente
Ya hay muchas respuestas a tu pregunta, también puedes hacerlo así. Puede darle a su tabla un nombre de alias y usarlo en la consulta de selección como esta:
fuente
Si el formato de las identificaciones en las dos tablas varía, entonces desea unirlas, como tal, puede seleccionar usar una identificación de una tabla principal, digamos si tiene
table_customes
ytable_orders
, y la identificación para los pedidos es como " 101 ", " 102 " ... " 110 ", solo use uno para los clientesfuente
fuente