首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“emp_no”键在表“员工”中不存在

“emp_no”键在表“员工”中不存在
EN

Stack Overflow用户
提问于 2013-10-06 03:07:58
回答 3查看 4K关注 0票数 1

为什么像这样的东西不起作用?

代码语言:javascript
运行
复制
mysql> SELECT * FROM employees FORCE INDEX(emp_no) WHERE emp_no = '77899';

这里的桌子是这样的:

代码语言:javascript
运行
复制
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int(11)       | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | NO   |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

我得到的错误是:

代码语言:javascript
运行
复制
ERROR 1176 (42000): Key 'emp_no' doesn't exist in table 'employees'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-06 03:10:37

仅仅因为emp_no是主键的名称,并不意味着它就是索引的名称。

每个提示都需要索引的名称,而不是列的名称。主键的名称是主键。若要查看表的索引名,请使用显示索引。http://dev.mysql.com/doc/refman/5.1/en/index-hints.html

代之而行

代码语言:javascript
运行
复制
mysql> SELECT * FROM employees FORCE INDEX(PRIMARY) WHERE emp_no = '77899';
票数 3
EN

Stack Overflow用户

发布于 2013-11-15 21:09:39

我认为这是在抱怨(非常无助),因为您正在对已经是索引的东西执行强制索引。一定要做SHOW INDEXES FROM <<tablename>>。您不应该需要强制索引子句。

票数 1
EN

Stack Overflow用户

发布于 2022-01-05 09:21:45

您可以首先通过此查询将其添加到索引列表中。

ALTER TABLE employees ADD INDEX emp_no (emp_no);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19205004

复制
相关文章

相似问题

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