Php mysql案例然后是无法识别的关键字和无法识别的令牌

Php mysql案例然后是无法识别的关键字和无法识别的令牌,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我想了解为什么这个mysql查询在phpmyadmin版本:4.7.1上有错误。请参阅附带的屏幕截图。我读到关于phpmyadmin版本的问题,然后我将phpmyadmin升级到最新版本,但在mysql中仍然出现此错误。当我检查是否有有效的sql时,它会显示无法识别的关键字和无法识别的令牌 select case when venue like '% aklan %' then 'usa' when venue like '% italy %' th

我想了解为什么这个mysql查询在phpmyadmin版本:4.7.1上有错误。请参阅附带的屏幕截图。我读到关于phpmyadmin版本的问题,然后我将phpmyadmin升级到最新版本,但在mysql中仍然出现此错误。当我检查是否有有效的sql时,它会显示无法识别的关键字和无法识别的令牌

select
      case 
        when venue like '% aklan %' then 'usa'
        when venue like '% italy %' then 'italy'
        when venue like '% china %' then 'china'
        when venue like '% india %' then 'india'
      end as cvenue,
      count(*) as population
    from 
        (
          select concat(' ', venue, ' ') as venue
          from tbl_trainings
        ) T
    group by cvenue

试着把你的案例陈述放在括号里。然后执行查询:

select
      (case 
        when venue like '% aklan %' then 'usa'
        when venue like '% italy %' then 'italy'
        when venue like '% china %' then 'china'
        when venue like '% india %' then 'india'
      end) as cvenue,
      count(*) as population
    from 
        (
          select concat(' ', venue, ' ') as venue
          from tbl_trainings
        ) T
    group by cvenue

试着把你的案例陈述放在括号里。然后执行查询:

select
      (case 
        when venue like '% aklan %' then 'usa'
        when venue like '% italy %' then 'italy'
        when venue like '% china %' then 'china'
        when venue like '% india %' then 'india'
      end) as cvenue,
      count(*) as population
    from 
        (
          select concat(' ', venue, ' ') as venue
          from tbl_trainings
        ) T
    group by cvenue

尝试下面的查询。这将为您提供相同的输出,并且性能会更好,因为您没有额外的内部查询:


即使你的名字在开头或结尾,你也不需要在开头和结尾加上额外的空格,然后使用LIKE。LIKE在没有它的情况下可以工作,因为%是通配符,表示0个或更多字符。

请尝试下面的查询。这将为您提供相同的输出,并且性能会更好,因为您没有额外的内部查询:


即使你的名字在开头或结尾,你也不需要在开头和结尾加上额外的空格,然后使用LIKE。没有该选项时,LIKE将起作用,因为%是通配符,表示0个或多个字符。

尝试将count*更改为count*这可能取决于这是否是一个问题。为什么选择子选择而不是直接从表中选择?@Sloather可能是为了避免在每次选择时重复concat表达式clause@propaganja: 首先,不需要内部选择查询。第二,请分享您的tbl_培训表格结构。您可以通过简单的查询获得解决方案。MySQL的哪个版本?尝试将count*更改为count*,这可能取决于这是否是问题所在。为什么选择subselect而不是直接从表中选择?@sloarthrasher可能是为了避免在每次查询时重复concat表达式clause@propaganja当前位置首先,不需要内部选择查询。第二,请分享您的tbl_培训表格结构。你可以通过简单的查询得到一个解决方案。什么版本的MySQL?为什么你认为这会有帮助?如果真的有帮助,是什么具体导致了问题?你认为为什么会有帮助?如果确实有帮助,是什么具体导致了问题?