mysql 索引查询问题

我创建了一个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开头所有人的查询语句怎么写。

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

阅读 2.7k
2 个回答

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题