SQL选择列名称为true

时间:2016-03-14 07:26:41

标签: mysql sql

我有一张桌子,里面有大约50个tinyint列(充当布尔值)。这些选项可以是true(1)或false(0)。

我需要能够只选择真实的列(值= 1),我需要获取这些列的名称。我不知道怎么写。

任何人都可以提供解决方案吗?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

您正在寻找UNPIVOT解决方案。 OracleSQL Server支持UNPIVOT,但我怀疑您没有使用这些数据库。因此,手动硬编码:

SELECT id, 'col1' AS col
WHERE col1 = 1
UNION ALL
SELECT id, 'col2' AS col
WHERE col2 = 1
...
UNION ALL
SELECT id, 'col50' AS col
WHERE col50 = 1

我在那里放了一个假设的id列,以防你的表包含多行。如果它只包含一行,则可能不需要id列。