mysql - 用pl/sql中的子查询替换不匹配的值

标签 mysql sql sql-server oracle

考虑下表

Table

SELECT QUEUENAME, 
       PRIORITY 
  FROM QUEUES 
 WHERE QUEUENAME IN ('Windows','Macintosh')

从上面的查询和表值中,没有 QueueName 作为“Macintosh”。因此,我希望每当 where 子句中没有匹配的值时,应选取带有 QueueName "Unknown" 的值及其值。

请告诉我如何实现这个查询?

我正在寻找的输出是

| QUEUENAME | PRIORITY |
|-----------|----------|
|   Windows |        1 |
|   Unknown |        3 |

最佳答案

已更新您正在寻找这样的东西吗?

SELECT COALESCE(q.queuename, q2.queuename) queuename,
       COALESCE(q.priority, q2.priority) priority
  FROM 
(
  SELECT 'Windows' queuename FROM dual
  UNION ALL
  SELECT 'Macintosh' FROM dual
) s LEFT JOIN queues q
    ON s.queuename = q.queuename JOIN queues q2
    ON q2.queuename = 'Unknown'

输出:

| QUEUENAME | PRIORITY |
|-----------|----------|
|   Windows |        1 |
|   Unknown |        3 |

这里是SQLFiddle 演示(Oracle)
这是SQLFiddle 演示(SQL Server)

关于mysql - 用pl/sql中的子查询替换不匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18506109/

相关文章:

mysql - 编写一个严格满足同一列上的多个条件的选择查询

SQL Server 2005 如何创建唯一约束?

mysql - 如何在 MySQL 中以智能方式更改记录位置?

mysql - 使用mysql中的not exit来查找尚未分配的ID

mysql - Laravel 5 - 找不到 MySQL 存储过程

mysql - IONIC 2 中的 Sqlite : sqlite3_prepare_v2 failure: near\\\"UNION\\\" : syntax error\},\“代码:5} 错误

mysql - 如何在 MySQL 表中选择特定范围的值?

sql - Mysql查询优化

SQL 选择以字母开头的列

sql - 存储过程sql中的日期转换