Объединить два запроса и вернуть одно из возможных значений - PullRequest
2 голосов
/ 23 февраля 2012
select value1 as value from T1 where id=10;

, если id не существует в T1 - выполнить другой запрос:

select value2 as value from T2 where id=10;

Итак, я хочу объединить эти запросы и вернуть одно значение (value1 или value2).Возможно ли это?

РЕШЕНИЕ:

Мое решение:

select ifnull(value1, value2) as value from T1 left join T2 using(id) where id=10;

Ответы [ 5 ]

3 голосов
/ 23 февраля 2012

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

select value1 as value from T1 where id=10 
union 
select value2 as value from T2 where id=10;

, в результате вы можете получить любое значение или оба

2 голосов
/ 23 февраля 2012

TRY (проверено)

SELECT COALESCE(t1.value1, t2.value2) AS Value FROM t1
INNER JOIN t2 USING(id)
WHERE id=10

это всегда будет сначала проверять таблицу t1 для id = 10 , если нет значения, тогда смотрите таблица t2 для того же идентификатора

Цитируется ОТ

Определен один столбец результата, который заменяет два общих столбца. используя операцию объединения. То есть для двух t1.a и t2.a результирующий столбец одиночного соединения a определяется как a = COALESCE (t1.a, t2.a)

1 голос
/ 23 февраля 2012

Вы можете использовать это тоже

select Distinct(s1.id) from sample1 as s1 inner join sample2 as s2;
1 голос
/ 23 февраля 2012

Вы можете объединить два запроса в поле id, а затем использовать функцию COALESCE для объединения двух результирующих полей в выходные данные.

Это предполагает, что у вас уже есть список идентификаторов дляприсоединиться против, хотя.В противном случае вы застряли в объединении или полном объединении, чтобы сначала получить такой список.

0 голосов
/ 23 февраля 2012

используйте union обоих

, как показано ниже:

select t1.id from table1 as t1  where id=10
union 
select t2.id from table2 as t2  where id=10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...