Mysql 如何从子查询中选择更多行

Mysql 如何从子查询中选择更多行,mysql,Mysql,当我尝试运行此查询时: 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 我怎样才能解决这个问题?我想从表中选择活动id,但不包括特定用户的最

当我尝试运行此查询时:

 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

我怎样才能解决这个问题?我想从表中选择活动id,但不包括特定用户的最新8个活动id。

不希望使用表达式或值进行比较,而不是结果集。 变不为不在

试试这个:

    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)

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)

通过这样做解决了这个问题:

                $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']."'";

通过这样做解决了这个问题:

                $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']."'";

mysql版本的子查询不支持NOT IN和LIMIT。我已经做了自己的select语句。。。如何将其更改为delete语句?$sql1=选择t1.*,t2.activity\u id作为activity\u id\u 2从activity t1左连接选择user\u id,activity\u id从activity where user\u id='.$row['user\u id'.'按用户\u id排序,activity_id DESC LIMIT 8 t1.user_id=t2.user_id和t1.activity_id=t2.activity_id,其中t2.activity_id为null,t1.user_id='.$row['user_id'.]@斯特凡。对于delete语句,只需使您的子查询返回要删除的活动\u id值,然后:从活动中删除,其中活动\u id不在您的子查询中,mysql版本的子查询不支持NOT IN和LIMIT。我已经创建了自己的select语句。。。如何将其更改为delete语句?$sql1=选择t1.*,t2.activity\u id作为activity\u id\u 2从activity t1左连接选择user\u id,activity\u id从activity where user\u id='.$row['user\u id'.'按用户\u id排序,activity_id DESC LIMIT 8 t1.user_id=t2.user_id和t1.activity_id=t2.activity_id,其中t2.activity_id为null,t1.user_id='.$row['user_id'.]@斯特凡。对于delete语句,只需使子查询返回要删除的活动\u id值,然后:从活动中删除,其中活动\u id不在子查询中