MySQL-子查询/连接同一个表不同的修订项
我有这样的mysql表:MySQL-子查询/连接同一个表不同的修订项,mysql,join,subquery,Mysql,Join,Subquery,我有这样的mysql表: data_store_id data_field_id data_record_id data_record_revision_id value 13992 70 705 2332 fraus 13993 71 705 2332 john 13994 86 705 2332 13995 87 705 2332 01/01/2020 13996 88 705 2332 1 13997 84 70
data_store_id data_field_id data_record_id data_record_revision_id value
13992 70 705 2332 fraus
13993 71 705 2332 john
13994 86 705 2332
13995 87 705 2332 01/01/2020
13996 88 705 2332 1
13997 84 705 2332 10/10/2020
13998 85 705 2332
13999 81 705 2332 1
14000 82 705 2332
14001 83 705 2332
14002 71 705 2333 nick
14003 87 705 2333 10/10/2015
14004 84 705 2333
14005 71 705 2334
14006 71 705 2335 peter
14007 86 705 2336 01/01/2012
14008 70 706 2337 liquorice
14009 71 706 2337 antony
14010 86 706 2337
14011 87 706 2337 02/02/2150
14012 88 706 2337 1
14013 84 706 2337 01/01/1987
14014 85 706 2337
14015 81 706 2337 1
14016 82 706 2337
14017 83 706 2337
14018 71 706 2338 dave
14019 87 706 2338 20/01/2011
14020 84 706 2338
14021 71 706 2339
14022 71 706 2340 winter
14023 86 706 2341 01/01/2012
我正在尝试编写一个查询以退出:
对于每个“数据记录id”,对于每个“数据字段id”,最后一个“数据记录修订id”的“值”。
例如,
我需要得到一些类似的东西:
data_record_id data_field_id_70 data_field_id_71 data_field_id_87
705 fraus peter 10/10/2015
706 liquorice winter 20/01/2011
有什么想法吗?
非常感谢
select
data_record_id,
max(case when data_field_id=70 then value end) data_record_id_70,
max(case when data_field_id=71 then value end) data_record_id_71,
max(case when data_field_id=87 then value end) data_record_id_87
from
(select data_field_id,data_record_id,substring_index(group_concat(value order by data_record_revision_id desc separator '|'),'|',1) value
from your_table
group by data_record_id,data_field_id
) s
group by data_record_id
对于数据字段id的每个值,您必须重复max(数据字段id=X然后值结束时的情况)数据记录\u id\u X
第一步:使用
group\u concat
和substring\u index
setp 2:将数据字段id转置到列数据字段id的所有可能值都已知吗?@guigoz是的,它们都已知。70、71、81、83、84、85、87、88这有帮助吗?如果是,请投票并接受,谢谢!工作得很有魅力。我们将进一步研究它