MySQL UNION - определить, какой из нескольких SELECT возвращает результат - PullRequest
2 голосов
/ 20 марта 2011

У меня есть два запроса SELECT, объединенных с UNION. Вот запрос MySQL:

SELECT `id`,`type`,`text`
  FROM my_table 
 WHERE position = '1' 
   AND status = '1' 
   AND targeting = 'all'
UNION
SELECT `id`,`type`,`text` 
  FROM my_table 
 WHERE position = '1' 
   AND status = '1' 
   AND targeting LIKE '%US%'

Как узнать, какой из этих двух запросов SELECT выполняется с TRUE, чтобы получить результат из нужной строки?

1 Ответ

7 голосов
/ 20 марта 2011

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

SELECT 'query1' AS `src`, `id`, `type`, `text`
FROM my_table
WHERE position = '1' AND status = '1' AND targeting = 'all'

UNION ALL

SELECT 'query2' AS `src`, `id`, `type`, `text`
FROM my_table
WHERE position = '1' AND status = '1' AND targeting LIKE '%US%'

Также в этом случае вам вообще не нужен СОЮЗ:

SELECT
    targeting LIKE '%US%' AS `targeting_like_us`,
    targeting = 'all' AS `targeting_equals_all`,
    `id`,
    `type`,
    `text`
FROM my_table
WHERE position = '1'
AND status = '1'
AND (targeting LIKE '%US%' OR targeting = 'all')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...