当前位置:  开发笔记 > 编程语言 > 正文

按特定顺序选择值

如何解决《按特定顺序选择值》经验,为你挑选了1个好方法。

我们使用下表作为示例:

tableId
1
2
3
4

我想选择tableId等于1或2的第一个值,如果没有选择任何行,则选择3或4.

我可以使用下面的select语句,但它只涵盖第一个条件:

SELECT tableId
FROM exampleTable
WHERE tableId = 1 OR tableId = 2

我应该在查询中添加什么才能使其正常工作?



1> Gordon Linof..:

这是一种方法:

SELECT tableId
FROM exampleTable
WHERE tableId IN (1, 2)
UNION ALL
SELECT tableId
FROM exampleTable
WHERE tableId IN (3, 4) AND
      NOT EXISTS (SELECT 1 FROM exampleTable WHERE tableId IN (1, 2));

这是一种替代方法,使用TOP WITH TIES:

select top 1 with ties
from exampleTable
where tableId in (1, 2, 3, 4)
order by (case when tableId in (1, 2) then 1 else 2 end);

top with tiesorder by键是相同的时返回行.通过使用casein order by,您可以保证1和2以及3和4的排序键相同.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有