如何在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
相关产品推荐
相关产品推荐

