0

我有两个表:每个原始表中data都有0、1 或 n 个图像。我希望能够从. 无法使用 JOIN,因为我无法编辑 sql 查询的第一部分:. 以下是我的解决方案:imgdataimgdataimgSELECT 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

最后一个解决方案相当快,但我想知道是否有更快(或更智能)的方法来完成这项工作

4

0 回答 0