我有一张类似
的表格index customer_number ABC CWD ROE BEE
1 1 0 0 0 1
我想只返回值为1的字段名称'BEE'
我发现通过SHOW FIELDS
我可以获取字段的名称,但我怎么说显示字段名称= 1的字段名称?
答案 0 :(得分:1)
我会在这里使用CASE语句。
SELECT
index, customer_number,
CASE
WHEN abc=0 THEN 'abc'
WHEN cwd=0 THEN 'cwd'
END
FROM
table_name
答案 1 :(得分:0)
你不能以一般的方式做到这一点。
你可以做的是写一个像这样的SQL语句:
select index, customer_number, decode (ABC, 1, "ABC", null) || decode (CWD, 1, "CWD", null) || decode (ROE, 1, "ROE", null) || decode (BEE, 1, "BEE", null) from aTable
它将显示值等于1的每个条目的列名。它是oracle sql,所以如果你使用不同的rdbms,语法会有所不同。
答案 2 :(得分:0)
击败死亡的答案是使用CASE语句,每列一个。类似的东西:
SELECT CASE WHEN index=1 THEN "index" ELSE "no_index" END as i,
CASE WHEN customer=1 THEN "customer" ELSE "no_customer" END as c,
CASE WHEN ...
答案 3 :(得分:0)
这不是SQL真正要做的事情,并且最好用应用程序逻辑完成。
那就是说,如果你真的想这样做,你可能需要涉及临时表和SPROC:
将SQL替换为几行应用程序代码将是一个巨大的混乱。可能不值得。