gpt4 book ai didi

MySQL - 如何从具有 true 或 false 的多列的表中获取一行

转载 作者:行者123 更新时间:2023-11-29 11:21:12 24 4
gpt4 key购买 nike

我正在尝试编写一个查询来获取单行中多列中值等于 TRUE 的记录。我以为这会很容易,但事实正在变得如此。

有一个像这样的表:

ITEMS   COL1    COL2    COL3    COL4    COL5    COL6
----------------------------------------------------
ITEM1 TRUE FALSE FALSE FALSE FALSE FALSE
ITEM1 FALSE FALSE TRUE FALSE FALSE FALSE
ITEM1 FALSE FALSE FALSE FALSE FALSE FALSE
ITEM1 FALSE FALSE FALSE FALSE FALSE TRUE
ITEM2 FALSE TRUE FALSE FALSE FALSE FALSE
ITEM2 TRUE FALSE FALSE FALSE FALSE FALSE
ITEM2 FALSE FALSE FALSE TRUE FALSE FALSE

我需要得到这样的东西:

ITEMS   COL1    COL2    COL3    COL4    COL5    COL6
----------------------------------------------------
ITEM1 TRUE FALSE TRUE FALSE FALSE TRUE
ITEM2 TRUE TRUE FALSE TRUE FALSE FALSE

我尝试在单个表中使用distinctgroup,如下所示:

Select distinct ITEMS, COL1,COL2,COL3,COL4,COL5,COL6
FROM TABLE
WHERE (COL10=’TRUE’ or COL2=’TRUE’ or COL3=’TRUE’ or COL4=’TRUE’ or COL5=’TRUE’ or COL6=’TRUE’)
GROUP BY ITEMS

但是它不起作用,我也尝试对同一个表进行联接,但结果是相同的,它在具有 TRUE 的列中显示 FALSE。

那么,有人可以提示我如何才能得到想要的结果吗?提前致谢。

最佳答案

MySQL 没有 bool 值聚合函数。然而,这些实际上是伪装的 0(代表 false)和 1(代表 true)。因此,尝试 max():

select items, max(col1), max(col2), max(col3), max(col4), max(col5), max(col6)
from t
group by items;

如果它们存储为字符串,那么 - 巧合 - 上面的内容实际上有效,因为 'TRUE' > 'FALSE'。你可以更有条理:

select items,
(case when max(col1 = 'TRUE') > 0 then 'TRUE' else 'FALSE' end) as col1,
. . .
from t
group by items;

关于MySQL - 如何从具有 true 或 false 的多列的表中获取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38907706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com