【问题标题】:Getting a row count and returning it in a variable MySQL获取行数并将其返回到变量 MySQL
【发布时间】:2015-02-25 21:24:33
【问题描述】:

我有一个问题,我无法返回此表中的行数。尝试将行数存储在变量中时出现错误,并且在尝试返回时也出现错误。这是 MySQL 中的存储函数。

我得到两个错误: 1.不允许从函数返回结果集 2.ROW_COUNT 不存在(不被调用)

到目前为止,这是我的代码:

BEGIN

declare pageexists int;
declare rowcount int;

select distinct ITU from tblITU
where ITU = inuser; 
SET rowcount = COUNT(*) FROM tblITU;

return rowcount;

END

提前致谢!

【问题讨论】:

    标签: mysql stored-procedures phpmyadmin rowcount


    【解决方案1】:

    对于 SELECT,您可以使用 FOUND_ROWS 构造(在此处记录):

    SELECT SQL_CALC_FOUND_ROWS 从 your_table WHERE 中选择什么;

    选择 FOUND_ROWS( );

    这将返回中的行数 最后一个 SELECT 查询(或者如果第一个查询有 LIMIT 子句,它 返回没有 LIMIT 的行数)。

    对于 UPDATE/DELETE/INSERT,它是 ROW_COUNT 构造

    INSERT INTO your_table VALUES (1,2,3);

    选择 ROW_COUNT();

    这将返回受影响的行数。

    引用自:Does Mysql have an equivalent to @@ROWCOUNT like in mssql?

    【讨论】:

    • 我试过这个。它似乎不起作用,或者我没有正确使用它。我试过这个: BEGIN declare pageexists int;声明 rowcount int;从 tblITU 中选择不同的 ITU,其中 ITUsers = inuser;从 tblITU 中选择 SQL_CALC_FOUND_ROWS *;行数 = SELECT FOUND_ROWS( );返回行数;结束
    • 这个仍然给出“不允许从函数返回结果集”错误
    • 抱歉,试试这个:SET rowcount = (select distinct count(ITU) from tblITU where ITUsers = inuser);返回行数;
    • 糟糕,我忘记了那里的 DISTINCT。应该这样做: SET rowcount = (SELECT COUNT(0) FROM (select distinct count(ITU) from tblITU where ITUsers = inuser) AS src);
    • 这个有效。谢谢。但我承认,我是个白痴。两个月前我创建了一个可行的解决方案,忘记了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多