Выберите из нескольких таблиц с одинаковыми условиями, чтобы избежать ошибки неоднозначности - PullRequest
0 голосов
/ 20 декабря 2010

Как я могу сделать что-то подобное, но избежать ошибки column common_reference is ambiguous?Я знаю, что это неоднозначно, я хочу выбрать из table_one все результаты для common_reference и table_two одинаковые.

SELECT * FROM table_one, table_two WHERE common_reference = 42

Это, очевидно, не сработает, так как мнеиспользовать подзапросы для достижения того, что мне нужно?

Ответы [ 4 ]

0 голосов
/ 05 января 2011

Как предложил Мчл в комментариях, UNION было решением.

0 голосов
/ 20 декабря 2010
SELECT table_one.* FROM table_one, table_two WHERE table_one.common_reference = 42
0 голосов
/ 20 декабря 2010

MySQL сообщит вам по ошибке, если в вашем SQL есть неразрешимая неоднозначность.

Если вы хотите сослаться на определенное поле, которое также существует в другой таблице (или той же самой таблице, если вы выполняете соединение для себя), используйте полные поля

SELECT * FROM table_one, table_two WHERE table_one.common_reference = 42

и / или псевдоним таблицы

SELECT * FROM table_one T1a, table_one T1b WHERE T1a.common_reference = 42

NB. Справедливое предупреждение, как отметил Мчл, это декартовы произведения, а не типичные объединения.

0 голосов
/ 20 декабря 2010

Начните с ...

SELECT * FROM table_one, table_two WHERE table_one.common_reference = 42

... и продолжайте этот путь:

SELECT * FROM table_one as T1, table_two as T2 WHERE T1.common_reference = 42
...