Eu tenho 2 mesas. tbl_names
e tbl_section
que tem ambos o id
campo neles. Como faço para selecionar o id
campo, porque sempre recebo este erro:
1052: Column 'id' in field list is ambiguous
Esta é a minha consulta:
SELECT id, name, section
FROM tbl_names, tbl_section
WHERE tbl_names.id = tbl_section.id
Eu poderia apenas selecionar todos os campos e evitar o erro. Mas isso seria um desperdício de desempenho. O que devo fazer?
INNER JOIN
estar 'depreciado' desde a introdução do SQL-92NATURAL JOIN
.Em sua
SELECT
declaração, você precisa prefaciar seu id com a tabela da qual deseja escolhê-lo.OU
fonte
id
campos; o OP declara "basta selecionar todos os campos e evitar o erro". E, eu não voto na sintaxe ANSI-89.Você faria isso fornecendo um nome totalmente qualificado, por exemplo:
O que lhe daria o id de tbl_names
fonte
FROM
cláusula...FROM tbl_names tbl_names, tbl_section tbl_section WHERE...
- é isso que o analisador está fazendo para gerar uma variável de intervalo.A solução mais simples é juntar com em
USING
vez deON
. Dessa forma, o banco de dados "sabe" que as duasid
colunas são realmente as mesmas e não fará nenhuma crítica a isso:Se
id
for o único nome de coluna comum emtbl_names
etbl_section
, você pode até usarNATURAL JOIN
:Veja também: https://dev.mysql.com/doc/refman/5.7/en/join.html
fonte
O que provavelmente você realmente deseja fazer aqui é usar o operador sindical assim:
Aqui estão os documentos para ele https://dev.mysql.com/doc/refman/5.0/en/union.html
fonte
Já existem muitas respostas para sua pergunta. Você também pode fazer assim. Você pode dar à sua tabela um nome de alias e usá-lo na consulta de seleção como este:
fonte
Se o formato dos id's nas duas tabelas variar, então você deseja juntá-los, como tal, você pode selecionar para usar um id de uma tabela principal, digamos, se você tem
table_customes
etable_orders
, e esse id para pedidos é como " 101 ", " 102 " ... " 110 ", basta usar um para clientesfonte
fonte