Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择列名称,其中为true_Mysql_Sql - Fatal编程技术网

Mysql SQL选择列名称,其中为true

Mysql SQL选择列名称,其中为true,mysql,sql,Mysql,Sql,我有一个大约有50列的表(充当布尔值)。这些选项为true(1)或false(0) 我需要能够只选择为true(value=1)的列,并且需要获取这些列的名称。我不知道该怎么写 有人能提供解决方案吗 提前感谢:)您正在寻找UNPIVOT解决方案UNPIVOT,但我怀疑您没有使用这些数据库。因此,需要手动对其进行硬编码: SELECT id, 'col1' AS col WHERE col1 = 1 UNION ALL SELECT id, 'col2' AS col WHERE col2 = 1

我有一个大约有50列的表(充当布尔值)。这些选项为true(1)或false(0)

我需要能够只选择为true(value=1)的列,并且需要获取这些列的名称。我不知道该怎么写

有人能提供解决方案吗


提前感谢:)

您正在寻找
UNPIVOT
解决方案<和中支持code>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
列。

在SQL和属于表示/逻辑层的东西中要求它似乎是一件奇怪的事情,但是我想您可以在最终选择之前动态地构建SQL字符串和/或使用临时表来计算这些内容。您使用的是什么rdbms?您的表应该只包含一行吗?如果是这种情况,那么它闻起来像是糟糕的设计,尤其是当所有列都是相同类型时。正确的方法是使用一个包含两列的表,分别使用
Name
(varchar)和
Value
(bit/int)标记dbms。(ansisql有一个布尔数据类型,但没有tinyint。)我试图获取所有为真的值,以便它们可以在PHP中列出。我可以在PHP中实现这一点,但如果以后添加列,这将更加灵活(这是一种可能性)。我不知道我在用什么数据库管理系统。不过我用的是phpmyadmin。我知道当我设置它时,我指定了Boolean,但它将其更改为tinyint。桌子上写着InnoDB如果是这样的话?我的表当前实际包含78行,需要能够添加到。每列都代表一个选项,该选项在至少一行中为true。我写了您建议的语句的一部分,但它只返回值(1)而不是列名。我的代码如下所示:
从'table_name'中选择'col1'作为col,其中'col1'=1和'item_id'=1001
-Advice?我建议的查询不会返回(1)而不是列名,您在评论中发布的查询也不会返回(1)。但当然,当你说你的代码看起来像这样时,我不知道你真正执行了什么。另外,您是如何执行查询的?也就是说,使用PHP?JAVA一些数据库工具?代码就是这样,除了不同的列和表名。我用phpmyadmin和PHP执行它,两者都返回值为1。@Dezonus:查询本身不返回1。很可能值
col1
被强制转换为int。我无法从我掌握的信息中判断为什么会发生这种情况……嗯,数据类型是一个tinyint,那么可能是phpmyadmin和PHP将其解释为int吗?如果是这样,我是否还需要添加/更改其他内容来处理此问题?