Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询,带有IN子句和每个项的限制_Mysql_Limit_In Clause - Fatal编程技术网

Mysql查询,带有IN子句和每个项的限制

Mysql查询,带有IN子句和每个项的限制,mysql,limit,in-clause,Mysql,Limit,In Clause,我在MySQL中有一个表,它有一个字段类_id。我需要编写一个查询,返回按时间降序排序的前15行,对于with in子句列表中的每个值 查询解释: select * from table_x where class_id IN (1,2,3) sort by time_x desc limit 15; 在上面的示例查询中,我需要根据降序时间顺序获取每个类id 1、2和3的前15行。您需要MySQL用户定义变量的帮助 在您的情况下,LIMIT 15实际上限制了结果集最多包含15条记录,这不是您想

我在MySQL中有一个表,它有一个字段类_id。我需要编写一个查询,返回按时间降序排序的前15行,对于with in子句列表中的每个值

查询解释:

select * from table_x where class_id IN (1,2,3) sort by time_x desc limit 15;
在上面的示例查询中,我需要根据降序时间顺序获取每个类id 1、2和3的前15行。

您需要MySQL用户定义变量的帮助


在您的情况下,LIMIT 15实际上限制了结果集最多包含15条记录,这不是您想要的。

请发布表结构。正是我要查找的表结构。测试一下,效果很好。非常感谢。是的,我在我的问题中发布了上述问题,只是为了更好地解释。欢迎您。还请注意,您可以通过这一行轻松调整每个类的记录数,其中t.rank
SELECT 
*
FROM 
(
    SELECT
        X.*,
        IF(@sameClass = class_id, @rn := @rn + 1,
             IF(@sameClass := class_id, @rn := 1, @rn := 1)
        ) AS rank
    FROM    table_x AS X
    CROSS JOIN (SELECT @sameClass := 0, @rn := 1 ) AS var
    WHERE   class_id IN (1, 2, 3) 
    ORDER BY class_id, time_x DESC
) AS t
WHERE t.rank <= 15
ORDER BY t.class_id, t.rank