Все таблицы в равной степени имеют идентификатор, имя, фамилию, фамилию, пол и только таблица доставок имеет свои собственные данные. (остальные 2 таблицы в настоящее время пусты.)
Теперь я хочу выбрать все из них в 1 запросе
Я подозреваю, что вы ищете union all
:
SELECT first_name, last_name, gender FROM patients
UNION ALL
SELECT first_name, last_name, gender FROM customers
UNION ALL
SELECT first_name, last_name, gender FROM deliveries
Это объединит все записи, доступные в 3 таблицах в наборе результатов. С другой стороны, использование (неявного) cross join
, как вы, сгенерирует декартово произведение трех таблиц с 9 столбцами (3 * 3) в наборе результатов (то есть, если вы исправите неоднозначность для имен столбцов, которые в настоящее время у вас есть).
Если вы хотите устранить дубликаты по таблицам, вы можете использовать union
вместо union all
.
Если вы хотите ограничить количество записей в наборе результатов , вы можете сделать это следующим образом:
(
SELECT first_name, last_name, gender FROM patients
UNION ALL
SELECT first_name, last_name, gender FROM customers
UNION ALL
SELECT first_name, last_name, gender FROM deliveries
)
ORDER BY id
LIMIT 5000
Обратите внимание, что функционально для этого требуется условие order by
, в противном случае порядок результатов не определен (я предположил id
).