考虑下表
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'
输出:
|队列名称|优先级|
|-----------|----------|
|窗户| 1|
|未知| 3|
这里是SQLFiddle演示(Oracle)
这里是SQLFiddle演示(SQL Server)
关于mysql - 用pl/sql中的子查询替换不匹配的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18506109/