Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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行到列使用大小写,分组方式。。。不同的版本呢?_Mysql_Database_Pivot - Fatal编程技术网

MYSQL行到列使用大小写,分组方式。。。不同的版本呢?

MYSQL行到列使用大小写,分组方式。。。不同的版本呢?,mysql,database,pivot,Mysql,Database,Pivot,这是我在这里的第一篇文章 我的问题与前一个帖子类似,但有所不同: 我拥有的是一张很大的表格。有许多表单(实际上是表单),每个表单都有相同的设置。每个表单都有标签和值,但表单中的值可以更改,并且表单仅显示“最新”的值。数据库有几个表,但这里重要的是字段标签和字段值。人们可能会怀疑这两个字段是链接在一起的,字段值表有一个“日期”列 现在,我不想做的是选择field_label.id和最新的值(field_value.fv_value)。首先,我认为这可能适用于CASE,但问题是,CASE在找到匹配

这是我在这里的第一篇文章

我的问题与前一个帖子类似,但有所不同:

我拥有的是一张很大的表格。有许多表单(实际上是表单),每个表单都有相同的设置。每个表单都有标签和值,但表单中的值可以更改,并且表单仅显示“最新”的值。数据库有几个表,但这里重要的是字段标签和字段值。人们可能会怀疑这两个字段是链接在一起的,字段值表有一个“日期”列

现在,我不想做的是选择field_label.id和最新的值(field_value.fv_value)。首先,我认为这可能适用于CASE,但问题是,CASE在找到匹配的命中后立即停止搜索表,我希望选择最新的命中,而不仅仅是第一个匹配的命中

到目前为止,我唯一的好主意是使用一个子查询,并通过先按标签的(链接的)id排序,然后按值的“日期”排序,来改革值表。这是我得到的

SELECT T.msdsid,
       field_label.id,
       (CASE WHEN field_label.id = 1 THEN T.fv_value ELSE NULL END) AS value
FROM (SELECT * FROM field_value ORDER BY field_value.fl_id,field_value.date DESC) AS T
LEFT JOIN field_label ON(T.fl_id=field_label.id)
GROUP BY T.refid;
现在,这正是我想要的,但是。。。有更好的办法吗


提前感谢。

此查询将显示每个字段\u value.fl\u id的最新值(记录):

SELECT fv1.* FROM field_value fv1
  JOIN (SELECT fl_id, MAX(date) date FROM field_value GROUP BY fl_id) fv2
    ON fv1.fl_id = fv2.fl_id AND fv1.date = fv2.date;
尝试此查询,使用它,并将其添加到您的查询中