【问题标题】:Dynamic SQL query - > row data to column name动态 SQL 查询 -> 行数据到列名
【发布时间】:2015-10-18 06:34:23
【问题描述】:

我对动态 SQL 查询/行数据到列名有一点/大问题。 我有这个链接: http://sqlfiddle.com/#!9/b4478/1

但如果我添加更多数据,查询将不起作用。 我收到错误:

You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 'FROM test
 GROUP  BY nid' at line 2

我的数据库目前很大。 在接下来的几天里,我制作了空数据库。 我添加到名称(另一个表,将 id 连接到“nid”)、日期(基准)、金额(osszeg)。 每周数据太多(也许但一次太多,然后查询不工作)

我需要一个简单/单一的 PHP 查询代码来进行这个查询。

感谢您的帮助,对不起我的英语不好。 非常感谢!

【问题讨论】:

  • 您能发布导致错误的语句吗?非常?
  • 您可能会遇到可以选择的列数限制。
  • GROUP_CONCAT()返回的结果也可能有问题;它有一个限制(默认 1024 个字符)。

标签: php mysql pivot


【解决方案1】:

没有看到实际的 SQL 语句,我们只是在猜测。但我怀疑您遇到了 GROUP_CONCAT 函数的记录行为,该函数返回由 MySQL 变量 GROUP_CONCAT_MAX_LEN 指定的最大长度字符串。默认为 1024 字节。

参考:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_group_concat_max_len

SET group_concat_max_len = 1024;

对于调试,您可以让 MySQL 存储程序发出 @sql 的内容,而不是尝试准备它,例如

SELECT @sql;

您可能需要考虑比较GROUP_CONCAT函数返回的字符串的长度(以字节为单位)不等于最大长度GROUP_CONCAT_MAX_LEN,以检查该值是否已被截断。


另外,我会选择将此结果作为一组行返回,而不是作为单行上的列。而且我会做任何需要的翻译以在客户端显示,而不是在数据库中进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2018-04-02
    相关资源
    最近更新 更多