MySQL UNION - 检测几个 SELECT 的返回结果

标签 mysql sql union

我有两个 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 执行以便从所需的行中获取结果?

最佳答案

您可以向查询添加一个额外的列,该列根据查询的哪一部分成功返回不同的常量:

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%'

同样在这种情况下,您根本不需要 UNION:

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')

关于MySQL UNION - 检测几个 SELECT 的返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371447/

相关文章:

mysql - 如何在将 CSV 文件导入 MySql 期间恢复自动增量,同时保留以前的编号?

简单联合的情况下的SQL查询性能

mysql - mysql中如何获取时间总和?

SQL Union 与 COUNT() 函数未返回预期结果

sql - PostgreSQL 中 UNION 之后的顺序是否保留?

mysql - 从表中选择速度很慢

mysql - 将 kubernetes 上托管的 jenkins 连接到 Google Cloud Platform 上的 MySQL

php - 仅将 MySQL 输出的第一个单词大写

sql - SQL Server 2008 中的 FREETEXT 查询不是短语匹配

php - "Conditional"根据字段值加入?