Tengo 2 mesas. tbl_namesy tbl_sectionque tiene tanto el idcampo en ellos. ¿Cómo hago para seleccionar el idcampo, 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 JOINque está 'depreciado' desde que se introdujo SQL-92NATURAL JOIN.En su
SELECTdeclaración, debe anteponer su identificación con la tabla de la que desea elegirla.O
fuente
idcampos; 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
FROMclá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
USINGlugar deON. De esa manera, la base de datos "sabe" que ambasidcolumnas son realmente iguales y no se preocupará por eso:Si
ides el único nombre de columna común entbl_namesytbl_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_customesytable_orders, y la identificación para los pedidos es como " 101 ", " 102 " ... " 110 ", solo use uno para los clientesfuente
fuente