Estamos teniendo algunos problemas extraños con las uniones internas de MySQL. Básicamente, obtenemos un error extraño cuando usamos un operador '=', pero usar 'like' en su lugar lo hace funcionar. Desafortunadamente, esto es a través de ActiveRecord y no es una manera fácil de dar un "Me gusta" allí, además queremos entender qué está pasando realmente aquí.MySQL INNER JOIN - '=' vs 'like'
Ésta es la consulta que falla:
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id = `site_versions`.version_id;
Aquí está el error:
ERROR 1296 (HY000): Got error 20008 'Query aborted due to out of query memory'
from NDBCLUSTER
Ésta es la consulta que funciona:
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id like `site_versions`.version_id;
Aquí están algunos detalles sobre la las tablas mismas:
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..]
+------------+--------------+------+-----+---------+----------------+
¿Alguna idea de por qué el 'me gusta' funciona y el '=' no?
¿de hecho está dando los resultados que espera? tal vez es simplemente no unirse a nada (porque ¿qué significa mean para ints?) y así evitar el problema de memoria que la consulta válida está desencadenando. –
@andrewcooke - Hmm, 'like' parece funcionar cuando se usa de esta manera: http://sqlfiddle.com/#!2/86792/1 –
También podría ayudar la pregunta para mostrar la 'explicación' de cada consulta. –