我正在尝试编写一个 MySQL 查询,它应该从两个不同的表中选择行。我进行了不同数量的查询,但它们都需要很长时间才能返回结果(> 0.6 秒)。我想要更快的响应。
情况是:
CREATE TABLE `classes` (
id int(99) auto_increment primary key,
status INT(1)
)
CREATE TABLE `classes_names` (
id int(99) auto_increment primary key,
class_id int(99),
name VARCHAR(255)
)
假设您应该获取班级中的所有名字,除了您要搜索的名字。例如,我的名字是“John Doe”,所以我们这样搜索我的名字:
SELECT
classes_names.`id`
FROM
`classes_names`
INNER JOIN `classes`
ON `status` = 1
WHERE
`name`='John Doe'
在此查询中,我的姓名将与我的班级 ID 一起返回。问题是,我希望除了我自己以外的“班级成员”。所以假设我们有这张表:
+------+----------+
| id | status |
+------+----------+
| 1 | 1 |
| 2 | 1 |
+------+----------+
+------+----------+---------------+----------+
| id | class_id | name |
+------+----------+--------+-----------------+
| 1 | 1 | John Doe |
| 2 | 1 | Alexandra Fito |
| 3 | 2 | Rico Hasti |
| 4 | 1 | Lady Gaga |
+------+----------+--------------------------+
我想用单词“描述”的查询:SELECT class_names.id WHERE SAME CLASS HAS NAME 'John Doe'.
返回的行应该是类中的所有成员 - 没有搜索的名称......所以我应该期待的结果是:
+------+----------+---------------+----------+
| id | class_id | name |
+------+----------+--------+-----------------+
| 2 | 1 | Alexandra Fito |
| 4 | 1 | Lady Gaga |
+------+----------+--------------------------+
太好了……有人想试一试吗?去吧!