我的两个表无法加入。运行
EXPLAIN SELECT `A`.`id`
FROM `demo`.`A` AS `A`
INNER JOIN `demo`.`B` AS `B`
ON ( `A`.`id` = 'B.A_id' )
产量
extra="Impossible WHERE noticed after reading const tables"
在结果中。我所有的研究表明,这条消息应该意味着其中一个表是空的,或者 where 条件包含一些永远无法满足的条件,例如“where 1=0”。
为了隔离问题,我创建了数据库的副本并删除了除了重复问题所需的表和行之外的所有内容。为了消除可能出现的问题,我删除了其中一个表上的所有索引。
我什至试过:
mysql> select * from A where id=23;
+----+
| id |
+----+
| 23 |
+----+
1 row in set (0.00 sec)
mysql> select * from B where A_id=23;
+------+------+
| A_id | B_id |
+------+------+
| 23 | 10 |
| 23 | 13 |
+------+------+
2 rows in set (0.00 sec)
所以这个连接应该至少产生一行。必须打破某些东西,但我不知道是什么。
最佳答案
您在 where 条件中使用了错误的字符。将 ' 替换为 `:
SELECT `A`.`id`
FROM `demo`.`A` AS `A`
INNER JOIN `demo`.`B` AS `B`
ON ( `A`.`id` = `B`.`A_id` )
关于mysql - 在阅读 const 表后不可能注意到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580614/