У нас возникли некоторые странные проблемы с внутренними соединениями MySQL. В принципе, мы получаем нечетную ошибку при использовании оператора '=', но вместо этого используйте «like», чтобы он работал. К сожалению, это через ActiveRecord, и нет простого способа просто похлопать «как» вместо этого, плюс мы хотим понять, что на самом деле происходит здесь.MySQL INNER JOIN - '=' vs 'like'
Вот запрос, который не удается:
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id = `site_versions`.version_id;
Здесь ошибка:
ERROR 1296 (HY000): Got error 20008 'Query aborted due to out of query memory'
from NDBCLUSTER
Вот запрос, который работает:
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id like `site_versions`.version_id;
Вот некоторые подробности относительно сами таблицы:
mysql> desc site_versions;
+----------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| version_id | int(11) | YES | MUL | NULL | |
[..snip..]
+----------------------+----------+------+-----+---------+----------------+
mysql> desc versions;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
[..snip..]
+------------+--------------+------+-----+---------+----------------+
Любые идеи, почему «нравится» работает, а «=» - нет?
похоже на результаты, которые вы ожидаете? может быть, это просто не может присоединиться к чему-либо (потому что что-то похожее на ints?), и поэтому избегайте проблемы с памятью, вызываемой действительным запросом. –
@andrewcooke - Хм, 'похоже', похоже, работает, когда используется так: http://sqlfiddle.com/#!2/86792/1 –
Это также может помочь задать вопрос« объяснять »каждого запроса. –