首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sqlite元组比较

sqlite元组比较
EN

Stack Overflow用户
提问于 2011-04-18 13:20:09
回答 2查看 4.2K关注 0票数 6

尝试做与this question相同的事情,但这次是在sqlite中。在我当前的应用程序中,我需要能够执行这种类型的查询:

代码语言:javascript
运行
复制
SELECT First, Last, Score
FROM mytable
WHERE
    ('John',  'Jordan',  5) <= (First, Last, Score )
    AND (First, Last, Score) <= ('Mike',  'Taylor',  50) 
ORDER BY First, Last, Score
LIMIT 1

在给定以下数据的情况下,得到('Liz', 'Jordan', 2)的答案:

代码语言:javascript
运行
复制
+-------+---------+-------+
| First | Last    | Score |
+-------+---------+-------+
| Liz   | Jordan  |     2 |
| John  | Jordan  |     2 |
| Liz   | Lemon   |    10 |
| Mike  | Taylor  |   100 |
| John  | Jackson |  1000 |
| Mike  | Wayne   |     1 |
| Liz   | Lemon   |    20 |
| Liz   | Meyers  |     5 |
| Bruce | Jackson |     1 |
+-------+---------+-------+

在sqlite中实现这一点的最有效方法是什么?请记住,这只是一个玩具示例,我的实际应用程序具有更多列和数据类型的表,以及数亿行。

如果解决方案很容易扩展到更多/更少的列,那就更好了。

元组比较:

元组按字典顺序排序,这意味着序列的顺序与它们的第一个不同元素的顺序相同。例如,(1,2,x) < (1,2,y)返回的结果与x< y相同。

值得注意的是,SQL-92 (和mysql、oracle、postresql)正确地实现了这一点。该标准使用“行值构造函数”来表示我所说的元组。该行为在part 8.2.7, page 209中进行了极其详细的定义。

下面是创建示例所需的SQL:

代码语言:javascript
运行
复制
create table mytable ( First char(20), Last char(20), Score int );
insert into mytable values ('Liz', 'Jordan', 2);
insert into mytable values ('John', 'Jordan', 2);
insert into mytable values ('Liz', 'Lemon', 10);
insert into mytable values ('Mike', 'Taylor', 100);
insert into mytable values ('John', 'Jackson', 1000);
insert into mytable values ('Mike', 'Wayne', 1);
insert into mytable values ('Liz', 'Lemon', 20);
insert into mytable values ('Liz', 'Meyers', 5);
insert into mytable values ('Bruce', 'Jackson', 1);
create unique index 'UNIQ' on mytable (First, Last, Score);
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5698801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档