Mysql SELECT 函数内部 mysql LIMIT 函数
Mysql SELECT function inside mysql LIMIT function
SELECT COUNT('2018-02-12')
as ids FROM tg_partner_data
WHERE assign_to = '2'
AND
followup_date = '2018-02-12' AND active='Y'
LIMIT (SELECT count FROM tg_master_count WHERE count_for = 'followup')
我试图将计数作为输出,但此查询不起作用。我这样使用是因为限制设置是动态的。
使用 LIMIT
的直接问题是没有 ORDER BY
子句。 您希望从结果集中得到第几条条记录?这还不清楚。我将给出一个通用模式,您可以使用它来限制子查询的记录数。
考虑一个只有一列的简单 table:
col
1
2
3
4
5
现在假设您要根据 col
的排序,使用一些子查询来限制结果集中的记录数。我们可以这样写:
SET @rn=0;
SELECT col
FROM
(
SELECT
col,
@rn:=@rn+1 rn
FROM yourTable
ORDER BY
col
) t
WHERE t.rn <= (SELECT 3 FROM dual); -- replace with your own subquery
这里的基本思想是我们在子查询中模拟行号,即我们为每条记录分配一个行号,按照col
列排序。然后我们对该 table 进行子查询,并仅保留与您要用于限制的子查询相匹配的记录。
SELECT COUNT('2018-02-12')
as ids FROM tg_partner_data
WHERE assign_to = '2'
AND
followup_date = '2018-02-12' AND active='Y'
LIMIT (SELECT count FROM tg_master_count WHERE count_for = 'followup')
我试图将计数作为输出,但此查询不起作用。我这样使用是因为限制设置是动态的。
使用 LIMIT
的直接问题是没有 ORDER BY
子句。 您希望从结果集中得到第几条条记录?这还不清楚。我将给出一个通用模式,您可以使用它来限制子查询的记录数。
考虑一个只有一列的简单 table:
col
1
2
3
4
5
现在假设您要根据 col
的排序,使用一些子查询来限制结果集中的记录数。我们可以这样写:
SET @rn=0;
SELECT col
FROM
(
SELECT
col,
@rn:=@rn+1 rn
FROM yourTable
ORDER BY
col
) t
WHERE t.rn <= (SELECT 3 FROM dual); -- replace with your own subquery
这里的基本思想是我们在子查询中模拟行号,即我们为每条记录分配一个行号,按照col
列排序。然后我们对该 table 进行子查询,并仅保留与您要用于限制的子查询相匹配的记录。