sqlite - 按照另一列的顺序选择表的子集

标签 sqlite select

我有 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/

相关文章:

string - SQLite选择字符串相等,其中值与列名相同?

ruby-on-rails - 使用水龙头将 SQLite 数据库推送到 Heroku?

android - 从 ListView 中删除自定义 ListView 中的项目,单击按钮

c# - 林克。从多个表中选择

mysql - 如何在 MySQL 中增加计数器并返回值

sqlite - C - GtkTextBuffer 文本与 gchar 的标签

android - 应用程序执行一次后向数据库添加新表

mysql - 在 SELECTed = VIEW rowID 处创建 View

linux - Bash Linux 上的选择菜单错误

javascript - 使用已知值选择的 jquery 设置选项