0

このクエリを実行しようとすると:

 select * FROM `activity` 
 WHERE user_id = 1
 AND activity_id NOT LIKE (select activity_id from activity where user_id = 1 ORDER BY activity_id DESC LIMIT 8)

次のエラーが表示されます。

 Subquery returns more than 1 row

どうすればこの問題を解決できますか? 特定のユーザーの最新の 8 つの activity_id を除いて、表から activity_id を選択したいと考えています。

4

2 に答える 2

3

NOT LIKE は、結果セットではなく、比較する式または値を期待しています。NOT IN を NOT LIKE に変更

これを試してください:

    SELECT * FROM `activity` 
             WHERE user_id = 1 AND activity_id NOT IN (
                     SELECT activity_id FROM activity WHERE user_id = 1 
                                        ORDER BY activity_id DESC LIMIT 8)
于 2012-10-31T22:42:17.290 に答える
0

これを行うことでそれを解決しました:

                $sql2 = "DELETE t1.*
                        FROM activity t1
                        left join (select activity_id from activity where user_id = '".$row['user_id']."' ORDER BY activity_id DESC LIMIT 8) t2
                        on (t1.activity_id = t2.activity_id)
                        where t2.activity_id is null
                        and t1.user_id = '".$row['user_id']."'";
于 2012-11-02T14:05:02.400 に答える