我有两个表:每个原始表中data
都有0、1 或 n 个图像。我希望能够从. 无法使用 JOIN,因为我无法编辑 sql 查询的第一部分:. 以下是我的解决方案:img
data
img
data
img
SELECT some_defualt_columns FROM data WHERE
解决方案 1需要一段时间才能执行但有效
SELECT some_defualt_columns FROM data WHERE `id` IN
(SELECT data_id FROM
(SELECT data_id, count(*) as occ FROM
img GROUP BY data_id
HAVING occ >1)
AS tmp)
解决方案 2这应该比以前更快(MySQL: View with Subquery in the FROM Clause Limitation)但这实际上会杀死我的 MySQL 服务器
SELECT * FROM data WHERE id IN
(SELECT data_id FROM img
GROUP BY `data_id`
HAVING count(`data_id`) > 1)
解决方案 3也许禁食但需要创建视图:
CREATE VIEW my_data_with_more_than_one_img AS
SELECT all_columns_of_data_table FROM
data JOIN img
GROUP BY img.data_id
HAVING (COUNT(img.data_id) > 1
比执行一个简单SELECT
的:
SELECT * FROM my_data_with_more_than_one_img WHERE 1
最后一个解决方案相当快,但我想知道是否有更快(或更智能)的方法来完成这项工作