gpt4 book ai didi

mysql - 用于检索大于 1 的行值和相应列名的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 10:33:14 24 4
gpt4 key购买 nike

我有一个看起来像这样的 MYSQL (phpmydamin) 数据库表,我正在尝试检索特定行的大于 1 的值以及与这些设置值对应的列名的信息。我基本上是想找出学生持有什么元素以及有多少。

username      item1 item2 item3 item4 item5 item6 item7

n000111 1 0 1 1 1 1 1

n010554 0 0 3 2 0 0 0

n010555 1 0 4 0 0 1 1

n010556 0 0 0 0 0 0 0

n010557 0 8 0 2 0 1 0

例如,如果我将用户名“n010555”发送到我的 phpscript 以从此表中获取数据,我期望得到如下反馈:

n010555
item1 - 1
item3 - 4
item6 - 1
item7 - 1
total - 7

类似的事情,我将非常感谢您的帮助。提前致谢。

最佳答案

您需要做的是逆透视您的数据。不幸的是,你的数据存储在MySQL中,它没有这样的功能。

这可以使用交叉连接来完成,但效率不是特别高。如果您没有大量数据,这可能不是问题,但如果您有大量数据,您可能需要考虑 ETL 数据或更改存储设计。

Bluefeet有好answer关于如何实现这一目标。针对您的解决方案的修改如下所示:

select t.id,
c.col,
case c.col
when 'item1' then item1
when 'item2' then item2
when 'item3' then item3
when 'item4' then item4
when 'item5' then item5
when 'item6' then item6
when 'item7' then item7
end as data
from yourtable t
cross join
(
select 'item1' as col
union all select 'item2'
union all select 'item3'
union all select 'item4'
union all select 'item5'
union all select 'item6'
union all select 'item7'
) c
where
username = :username

关于mysql - 用于检索大于 1 的行值和相应列名的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com