Jak*_*ake 2 mysql sql database
SELECT * FROM `groupon-spain-6sep-2011`, `Hoja1`,`GroupaliaJuly2011`
WHERE `groupon-spain-6sep-2011`.`code`= 5654
OR `Hoja1`.`code` = "5654
OR `GroupaliaJuly2011`.`code` = 5654
Run Code Online (Sandbox Code Playgroud)
您缺少任何与表相关的连接条件,因此正在进行3个表的笛卡尔连接.
我建议始终使用显式连接语法
SELECT *
FROM `groupon-spain-6sep-2011`
JOIN `hoja1` ON `groupon-spain-6sep-2011`.foo=`hoja1`.foo
JOIN `groupaliajuly2011` ON `groupaliajuly2011`.`foo` = `hoja1`.foo
WHERE `groupon-spain-6sep-2011`.`code` = 5654
OR `hoja1`.`code` = 5654
OR `groupaliajuly2011`.`code` = 5654
Run Code Online (Sandbox Code Playgroud)
虽然你可能想要一个联盟在这里,但我想呢?
您提出的查询涉及三个表中的笛卡尔积(在标准SQL中也称为CROSS JOIN,感谢@onedaywhen的建议),涉及的记录量将是大小(A)*大小(B)*大小(C) .因此,如果总产品足够大,它将填充大量内存,这将使您的数据库无法响应任何其他请求,这将导致数据库的"冻结".
我注意到你想要三个指定列中的任何一个是相同的值'5654',所以你可以分别从三个表中选择元组,然后UNION它们,而不是像你现在这样做它们的笛卡尔积,因为我不认为你制作的笛卡尔产品有任何意义.这将节省大量的内存.
你可能想做一个联盟:
SELECT *
FROM groupon-spain-6sep-2011
WHERE code = 5654
UNION SELECT *
FROM Hoja1
WHERE code = 5654
UNION SELECT *
FROM GroupaliaJuly2011
WHERE code = 5654
Run Code Online (Sandbox Code Playgroud)