0

私は2つのテーブルを持っています:dataそしてimgそれぞれがテーブルdataに0、1、またはn個の画像を持っていることから生imgです。dataに複数の画像があることからすべてのレコードを取得できるようにしたいimg。SQLクエリの最初の部分を編集できないため、JOINを使用できません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:FROM句の制限でサブクエリを使用して表示)が、これは文字通り私の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