为什么查询显示系统错误


Why query is showing system error?

我有一个查询,我想用php写它,但它显示错误。

我的查询如下:

$exe1 = mysql_query("
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(CASE WHEN `size_name` = ''',
      `size_name`,
      ''' THEN Quantity ELSE 0 END) AS `',
      `size_name`, '`'
    )
  ) INTO @sql
FROM Size;
SET @sql = CONCAT('SELECT st.Style , ', @sql, '
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');
PREPARE stmt FROM @sql;
EXECUTE stmt;") or die(mysql_error());

但它显示的信息

您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法接近'SET@sql=CONCAT('SELECT st.Style,',@sql,'FROM Size s'12号线

我只是不知道如何解决这个错误。有人能帮我解决这个问题吗?

您应该在@sql中打印出结果查询以查看问题。

在你的情况下,你似乎在最后一个论点后面多了一个逗号。尝试更改线路:

SET @sql = CONCAT('SELECT st.Style , ', @sql, '
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');

至:

SET @sql = CONCAT('SELECT st.Style , ', @sql'
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');

mysql_query不支持多个查询。

http://php.net/manual/en/function.mysql-query.php

mysql*函数已弃用,将被删除。我建议您使用mysqli_*函数或PDO。