У меня 2 стола. tbl_names
и в tbl_section
котором есть оба id
поля. Как мне выбрать id
поле, потому что я всегда получаю эту ошибку:
1052: Column 'id' in field list is ambiguous
Вот мой запрос:
SELECT id, name, section
FROM tbl_names, tbl_section
WHERE tbl_names.id = tbl_section.id
Я мог просто выбрать все поля и избежать ошибки. Но это было бы потерей производительности. Что я должен делать?
INNER JOIN
что он «обесценился» с момента появления SQL-92NATURAL JOIN
.В своем
SELECT
заявлении вам нужно указать перед идентификатором таблицу, из которой вы хотите его выбрать.SELECT tbl_names.id, name, section FROM tbl_names INNER JOIN tbl_section ON tbl_names.id = tbl_section.id
ИЛИ
SELECT tbl_section.id, name, section FROM tbl_names INNER JOIN tbl_section ON tbl_names.id = tbl_section.id
источник
id
полей; OP гласит: «Просто выберите все поля и избегайте ошибки». И я не голосую за синтаксис ANSI-89.Это можно сделать, указав полное имя, например:
SELECT tbl_names.id as id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id
Что даст вам идентификатор tbl_names
источник
FROM
предложение...FROM tbl_names tbl_names, tbl_section tbl_section WHERE...
- это то, что синтаксический анализатор делает для создания переменной диапазона.Самое простое решение - это соединение
USING
вместоON
. Таким образом, база данных «знает», что обаid
столбца на самом деле одинаковы, и не будет придираться к этому:SELECT id, name, section FROM tbl_names JOIN tbl_section USING (id)
Если
id
это единственное общее имя столбца вtbl_names
иtbl_section
, вы даже можете использоватьNATURAL JOIN
:SELECT id, name, section FROM tbl_names NATURAL JOIN tbl_section
См. Также: https://dev.mysql.com/doc/refman/5.7/en/join.html
источник
Что вы, вероятно, действительно хотите здесь сделать, это использовать оператор объединения следующим образом:
(select ID from Logo where AccountID = 1 and Rendered = 'True') union (select ID from Design where AccountID = 1 and Rendered = 'True') order by ID limit 0, 51
Вот документы для этого https://dev.mysql.com/doc/refman/5.0/en/union.html
источник
На ваш вопрос уже есть много ответов, вы тоже можете это сделать. Вы можете дать своей таблице псевдоним и использовать его в запросе выбора следующим образом:
SELECT a.id, b.id, name, section FROM tbl_names as a LEFT JOIN tbl_section as b ON a.id = b.id;
источник
Если формат идентификаторов в двух таблицах различается, вы хотите присоединиться к ним, поэтому вы можете выбрать использование идентификатора из одной основной таблицы, скажем, если у вас есть
table_customes
иtable_orders
, а идентификатор для заказов похож на « 101 », " 102 " ... " 110 ", просто используйте один для клиентовselect customers.id, name, amount, date from customers.orders;
источник
SELECT tbl_names.id, tbl_names.name, tbl_names.section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id
источник