2 つのテーブルが結合できません。ランニング
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"
結果で。私の調査によると、このメッセージは、テーブルの 1 つが空であるか、「where 1=0」など、満たされない条件が where 条件に含まれていることを意味するはずです。
問題を切り分けるために、データベースのコピーを作成し、問題の再現に必要なテーブルと行以外はすべて削除しました。考えられる問題を排除するために、テーブルの 1 つですべてのインデックスを削除しました。
私も試しました:
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)
したがって、この結合は少なくとも 1 つの行を生成する必要があります。何かが壊れている必要がありますが、何が原因かわかりません。
https://gist.github.com/3150634を参照してください