Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 为什么查询返回没有LIMIT子句的空结果集?_Mysql_Sql - Fatal编程技术网

Mysql 为什么查询返回没有LIMIT子句的空结果集?

Mysql 为什么查询返回没有LIMIT子句的空结果集?,mysql,sql,Mysql,Sql,我有一个mysql函数: BEGIN DECLARE top_tags VARCHAR(100) charset utf8; SELECT substring_index(group_concat(x.NAME order BY x.tag_score DESC separator ','), ',', 5) INTO top_tags FROM (SELECT t.NAME, Sum(r.score) AS tag_score FROM reputa

我有一个mysql函数:

BEGIN 
  DECLARE top_tags VARCHAR(100) charset utf8; 
  SELECT   substring_index(group_concat(x.NAME order BY x.tag_score DESC separator ','), ',', 5)
  INTO top_tags 
  FROM (SELECT t.NAME, Sum(r.score) AS tag_score 
        FROM reputations r 
          JOIN qanda_tags qt ON qt.qanda_id = r.question_id 
          JOIN tags t ON t.id = qt.tag_id 
        WHERE r.owner_id = 1 
          AND r.date_time > CASE 'all' 
            WHEN 'WEEK' THEN unix_timestamp(date_sub(Now(), interval 1 week))
            WHEN 'MONTH' THEN unix_timestamp(date_sub(now(), interval 1 month))
            WHEN 'YEAR' THEN unix_timestamp(date_sub(now(), interval 1 year))
          ELSE 1 
          END 
        group BY t.NAME ) x; 
  return top_tags; 
end
它返回一个空的结果集:

当我在
groupbyt.NAME
后面添加
limit60
子句时,它返回预期结果:

为什么呢


注意:
限制61
或更多也不会导致结果<代码>限制60或更少会有结果。

我不确定,但在
组concat()之前进行过滤会更有效吗


也许您遇到了与
组\u concat\u max\u len
侧注相关的问题:这可能只是编辑您的查询以在此处演示的产物,但您的
案例
表达式似乎格式不正确;它将始终使用ELSE值。
  SELECT group_concat(x.NAME order BY x.tag_score DESC separator ',')
  INTO top_tags 
  FROM (SELECT t.NAME, Sum(r.score) AS tag_score 
        FROM reputations r JOIN
             qanda_tags qt
             ON qt.qanda_id = r.question_id JOIN
             tags t
             ON t.id = qt.tag_id 
        WHERE r.owner_id = 1  AND
              r.date_time > (CASE 'all' 
                               WHEN 'WEEK' THEN unix_timestamp(date_sub(Now(), interval 1 week))
                               WHEN 'MONTH' THEN unix_timestamp(date_sub(now(), interval 1 month))
                               WHEN 'YEAR' THEN unix_timestamp(date_sub(now(), interval 1 year))
                               ELSE 1 
                            END)
        group BY t.NAME
        order by tag_score desc
        limit 5
       ) x;