SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.01.2015 14:13:43

Kim
Участник
Зарегистрирован: 31.01.2015
Сообщений: 16

Выборка из нескольких таблиц с разным приоритетом

CREATE TABLE `table_1` (
  `id` mediumint(8) unsigned NOT NULL,
  `val` longblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `table_2` (
  `id` mediumint(8) unsigned NOT NULL,
  `val` longblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Нужно выбрать строки с id равным 1,2,3,4 и 5 из обеих таблиц. При этом данные надо сначала выбрать из таблицы `table_2`. Если какой-то(какие-то) id в таблице `table_2` выбрать не получилось - выбрать их уже из таблицы `table_1`.  Структура обеих таблиц идентична. Можно ли это реализовать одним запросом, или лучше разделить на два?

Неактивен

 

#2 31.01.2015 19:21:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Выборка из нескольких таблиц с разным приоритетом

select id, substr(max(concat(x,val)),2) as val
(select id, val, 2 as x from table_2 where id in (...)
union all
select id, val, 1 from table_1 where id in (...)) t
group by id;

Описание метода в статье http://sqlinfo.ru/articles/info/18.html


Ещё можно использовать опорную таблицу из списка нужных id и через left join добавлять обе таблицы, выбирая потом нужные значения через ifnull.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson