【发布时间】:2018-04-04 20:37:35
【问题描述】:
我正在尝试运行与其他 2 个表连接的 SQL 查询。 但是,我仍然需要能够在使用主表 ID 的查询中使用 WHERE 条件。在这种情况下,主表是时间表。
我尝试了以下方法,但根本没有返回任何行:
SELECT * FROM `timesheets` t
INNER JOIN `users` u ON `t`.`teacher_id` = `u`.`id`
INNER JOIN `schools` s ON `t`.`school_id` = `s`.`id`
WHERE t.id = 46
在此示例中,我尝试过滤到 ID 为 46 的行,确实存在。
如果我只使用与id = 46 相同的 where 条件对 timesheets 表进行简单查询,它将起作用并返回该特定行。
使用 EXPLAIN 时,我在“额外”列中收到此消息:
阅读 const table 后发现不可能 WHERE
任何想法我做错了什么?
【问题讨论】:
-
用 t 替换 't'。对于别名,引号已过时。其他别名也一样
-
在这种情况下使用反引号是完全必要的,topicstarter 应该将它们全部删除。
-
先做左连接,确保 Schools 表的内连接不会阻塞
标签: mysql inner-join where