You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中查找表中指定条目并返回对应列名或索引

PostgreSQL中查找卡牌ID对应的列名方案

针对你的卡组表结构(单行列card1、card2、card3、card4,各存唯一卡牌ID),这里提供几种PostgreSQL可用的查询方案,实现查找指定卡牌ID对应的列名:

方法1:数组+UNNEST展开

适合固定列数的场景,写法简洁:

SELECT unnest(array['card1', 'card2', 'card3', 'card4']) AS column_name
FROM deck  -- 替换成你的表名
WHERE unnest(array[card1, card2, card3, card4]) = 'cardID3';  -- 替换成你要查找的卡牌ID

方法2:CASE条件判断

逻辑直观,适合列数较少且固定的情况:

SELECT
  CASE
    WHEN card1 = 'cardID3' THEN 'card1'
    WHEN card2 = 'cardID3' THEN 'card2'
    WHEN card3 = 'cardID3' THEN 'card3'
    WHEN card4 = 'cardID3' THEN 'card4'
  END AS column_name
FROM deck  -- 替换成你的表名
WHERE 'cardID3' IN (card1, card2, card3, card4);  -- 替换成你要查找的卡牌ID

方法3:JSONB键值对遍历

最通用的方案,即使后续列数变化也无需修改SQL:

SELECT key AS column_name
FROM deck,  -- 替换成你的表名
     jsonb_each_text(to_jsonb(deck))
WHERE value = 'cardID3';  -- 替换成你要查找的卡牌ID

内容的提问来源于stack exchange,提问作者daigualmarica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:00:49