我一直在执行简单的3 sql查询
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="moment.js"></script>
<script type="text/javascript" src="daterangepicker.js"></script>
<link rel="stylesheet" type="text/css" href="bootstrap.css" />
<link rel="stylesheet" type="text/css" href="daterangepicker-bs3.css" />
所有Query返回相同的结果。意味着首先在(1,2,3)中执行Query,所以得到像
这样的结果1)首先记录哪个rowid为1
2)第二个记录哪个rowid是2
3)第三个记录哪个rowid是3
与其他查询相同。
如果我调用第二个和第三个Query,结果与第一个Query相同,但我希望通过rowid调用序列得到结果。
答案 0 :(得分:1)
您需要ORDER BY
:
SELECT * FROM Table where rowid in(1,2,3) ORDER BY rowid ASC
SELECT * FROM Table where rowid in(2,1,3) ORDER BY
(
CASE rowid
WHEN 2
THEN 1
WHEN 1
THEN 2
WHEN 3
THEN 3
END
)
SELECT * FROM Table where rowid in(3,2,1) ORDER BY rowid DESC
答案 1 :(得分:0)
当服务器基本上为每一行执行查询时,确定它是否满足where
子句 - 因此where
子句仅确定如果该行在结果集,而不是它的位置。
由于这些表实际上是一个集合,因此没有行的内在排序(任何顺序都应该被认为是偶然的),如果您需要order
明确需要的有序数据by
您想要排序的字段,即
SELECT *
FROM Table
WHERE rowid in(2, 1, 3)
ORDER BY rowid