MySQL单表查询:如何获取Display_Name与Play_Time的元值?
正确查询MySQL单表中指定submission_id的多个key对应值的方法
嘿,你的原查询语句有个逻辑问题哦——同一个key字段不可能同时等于'Display_Name'和'Play_Time',这就像要求一个人同时是张三和李四,自然查不到结果啦!下面给你两种实用的解决方案:
方案1:获取两行结果(保留原表行结构)
如果你只是想拿到这两个key对应的两条记录,可以用IN或者OR来替换原语句里的双重AND:
- 使用
IN的写法:
SELECT `key`, `value` FROM `myTable` WHERE submission_id = '47' AND `key` IN ('Display_Name', 'Play_Time');
- 使用
OR的写法(效果和上面一致):
SELECT `key`, `value` FROM `myTable` WHERE submission_id = '47' AND (`key` = 'Display_Name' OR `key` = 'Play_Time');
这两种写法都会返回两行数据,分别对应你要的两个key和它们的value。
方案2:将结果合并为一行(转成列展示)
如果你希望把两个value放在同一行的不同列里,方便查看或后续处理,可以用CASE配合聚合函数实现行转列:
SELECT submission_id, MAX(CASE WHEN `key` = 'Display_Name' THEN `value` END) AS Display_Name, MAX(CASE WHEN `key` = 'Play_Time' THEN `value` END) AS Play_Time FROM `myTable` WHERE submission_id = '47' GROUP BY submission_id;
执行这条语句后,你会得到一行数据,其中Display_Name列对应红色高亮的名称值,Play_Time列对应时长值。
内容的提问来源于stack exchange,提问作者HELLBORN
相关产品推荐
相关产品推荐

