我有 2 个这样的表(简化的示例):
create table T (i integer, a text);
insert into T values (3,'ww');
insert into T values (1,'ee');
insert into T values (5,'nn');
insert into T values (2,'kk');
insert into T values (4,'ss');
create table U (i integer);
insert into U values (2);
insert into U values (3);
insert into U values (5);
insert into U values (1);
select rowid, i from U;
rowid i
----- --
1 2
2 3
3 5
4 1
select * from T where i in (select i from U order by rowid);
i a
----- ----------------
3 ww
5 nn
2 kk
1 ee
我需要按照与内部选择相同的顺序在 in(...)
中收集 i
,例如:
select * from T where i inUnsorted (select i from U order by rowid);
i a
----- ----------------
2 kk
3 ww
5 nn
1 ee
这可能吗?
最佳答案
在 SQL 中,除非使用 ORDER BY,否则查询是未排序的,因此外部查询需要此子句。
无论如何,您可以简单地使用相关子查询查找该值:
SELECT *
FROM T
WHERE i IN (SELECT i
FROM U)
ORDER BY (SELECT rowid
FROM U
WHERE U.i = T.i);
关于sqlite - 按照另一列的顺序选择表的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180315/