我想 SET
一列中的布尔值为true,但前提是相邻列中的值是唯一的(无论该值是什么)。
假设 ROOM_IS_PRIVATE
是我正在设置的布尔列,并且 ROOM_VALUE
要检查其值的唯一性的列。我对编写查询还比较陌生,所以到目前为止我掌握了以下内容:
SET ROOM_IS_PRIVATE = '1'
WHERE COUNT(ROOM_VALUE) = 1;
但这对我没用。我使用count函数是否正确?
编辑:以下是我希望达到的结果示例:
| ROOM_VALUE | ROOM_IS_PRIVATE |
|--------------|-------------------|
| 54 | 0 |
| 13 | 1 |
| 08 | 0 |
| 08 | 0 |
| 54 | 0 |
| 19 | 1 |
| 08 | 0 |
第二列只会变成 1
如果第一列中的值对于该列是唯一的。
3条答案
按热度按时间t40tm48m1#
请这样试试-
iugsix8n2#
这个
SET
条款看起来是对的。但这不是一个有效的声明;看来我们错过了UPDATE
关键字,我们要更新的表的名称。如果我们只想修改
room_value
是独一无二的,我们可以这样做:内联视图
s
并将结果具体化为派生表。这给我们带来了不同的价值观room_value
,以及具有相同room_value
.然后我们将派生的故事连接回原始表,匹配
room_value
列,所以现在,对于表中的每一行,我们可以知道具有相同room_value
.在
SET
子句中,我们使用一个表达式来测试计数,并有条件地指定1
(何时cnt=1
)否则会留下room_is_private
不变。我想我们可能也想
room_is_private
=0,当房间值不唯一时,所以不设置room_is_private
对于当前值(即保持不变),我们将改为指定0
.0md85ypi3#
尝试以下条件更新: