MySQL объединяет проблему - PullRequest
1 голос
/ 25 мая 2010

Table1 имеет u_name, Table2 имеет u_name, u_type и u_admin

  1. Table1.u_name является уникальным. Но ни одно из 3 полей в таблице 2 не является уникальным.

  2. Для любого значения Table1.u_name в Table2 содержится от 0 до многих записей, которым Table2.u_name соответствует это значение.

  3. Для любого значения Table1.u_name в Table2 есть от 0 до 1 записей, которым Table2.u_name соответствует это значение AND Table2.u_type = 'S'

Что я хочу: Используйте Table1.u_name для получения Table1. , Table2.u_admin, где Table1.u_name = Tabl2.u_name и Table2.u_type = 'S'. Если в Таблице 2 такой записи нет, нам все равно нужно получить Таблицу 1.

Пожалуйста, помогите дать мне несколько советов. Большое вам спасибо!

1 Ответ

0 голосов
/ 25 мая 2010

Я предлагаю вам прочитать о "внешнем соединении", а именно о "левом внешнем соединении", которое вам и нужно. Внешнее объединение возвращает все строки из одной таблицы, возвращая значения NULL для значений из объединенной таблицы, где нет строки, соответствующей ключу.

Любой из них должен работать

select table1.*, table2.u_admin from table1 left join table2
on table1.u_name=table2.u_name and table2.type='S'

Или

with a as (select u_name,u_admin from table2 where type='S')
select table1.*,a.u_admin from table1 left join a on table1.u_name=a.u_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...