mysql 索引查询问题

发布于 2022-09-04 00:26:28 字数 397 浏览 12 评论 0

我创建了一个people表字段如下
CREATE TABLE People(

last_name varchar(50)    not null;//
first_name varchar(50)    not null;
dob    date    not null;
gender    enum('m','f')    not null;
key(last_name,first_name,dob)

)
我对last_name,first_name,dob建了组合索引

问题1:查询姓在Allen和Barrymore之间所有人的查询语句怎么写。

问题2:查询所有姓为Allen,并且名字是字母K开头所有人的查询语句怎么写。

要求查询语句不能破坏索引。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凑诗 2022-09-11 00:26:28

查詢姓在 Allen Barrymore 我的理解是
Allen
Al%
Am%
An%
...
Barrymord
Barrymore
這些所有符合的記錄
如果是這樣 SQL 就有點無力了.

select * from people where last_name='Allen' and first_name like 'K%'

被翻牌 2022-09-11 00:26:28

首先哈,看不懂你为什么这么设计数据表,dob字段,是什么信息呢。。然后存在还有dob字段一起查询的需求吗? 建立一个联合索引 。还有! 提问题整洁点啊,你写的好乱

开始回答:
问题一之间的所有人是怎么区分的呢? 我这里姑且按照字母表中的排序,那么Allez就是在AllenBarrymore之间的。我的想法是先以LIKE 'A%'LIKE 'B%'分别作为条件进行查询出所有满足条件的记录,然后根据给定的两个姓氏进行与查询出来的结果进行判断。这样判断的逻辑写在代码中而不是体现在sql语句中

问题二 RunSN的回答就是对的啦

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文