Есть много похожих вопросов, из которых я узнал, но мой набор результатов не возвращает ожидаемых результатов.
Моя цель:
Создайте запрос, который будет возвращать набор результатов, содержащий все строки в таблице demo1
с user_id
= "admin" и единственную строку таблицы demo2
с user_id
= "admin". Каждая строка в demo2
имеет уникальный user_id
, поэтому всегда есть только одна строка с «admin», как user_id
.
Однако я не хочу, чтобы данные demo2
расточительно повторялись в каждой последующей строке demo1
. Я только хочу, чтобы первая строка набора результатов содержала данные demo2
как ненулевые значения. Нулевые значения для столбцов demo2
должны возвращаться только для строк 2+ в наборе результатов.
Текущий статус:
Прямо сейчас мой запрос возвращает соответствующие столбцы (все demo1
и все demo2
), но
все данные, возвращаемые с demo2
, равны null
.
Demo1:
id user_id product quantity warehouse
1 admin phone 3 A
2 admin desk 1 D
3 k45 chair 5 B
Demo2:
id user_id employee job country
1 admin james tech usa
2 c39 cindy tech spain
Запрос:
SELECT *
from demo1
left join (SELECT * FROM demo2 WHERE demo2.user_id = 'X' LIMIT 1) X
on (demo1.user_id = x.user_id)
WHERE demo1.user_id = 'admin'
Обоснование:
Подзапрос LIMIT 1
был моей попыткой получить demo2
значения только для строки 1, полагая, что остальное будет null
. Вместо этого все значения null
.
Текущий результат:
id user_id product quantity warehouse id employee job country
1 admin phone 3 A null null null null
2 admin desk 1 D null null null null
Желаемый результат:
id user_id product quantity warehouse id employee job country
1 admin phone 3 A 1 james tech usa
2 admin desk 1 D null null null null
Я пытался заменить left join
на left inner join
, right join
, full join
, но ничего не дает желаемого результата.