MySQL:仅当另一列中的值唯一时才设置值

汤姆·克鲁斯

我想SET在一列中将布尔值设置为True,但前提是相邻列中的值是唯一的(无论该值是什么)。

假设ROOM_IS_PRIVATE是我正在设置的布尔列,并且ROOM_VALUE是我要检查其唯一性的列。我刚开始编写查询,所以这是到目前为止的内容:

SET ROOM_IS_PRIVATE = '1'
WHERE COUNT(ROOM_VALUE) = 1;

但这对我不起作用。使用计数功能,我是否还在正确的轨道上?

编辑:这是我希望实现的结果的示例:

|  ROOM_VALUE  |  ROOM_IS_PRIVATE  |
|--------------|-------------------|
|      54      |         0         |
|      13      |         1         |
|      08      |         0         |
|      08      |         0         |
|      54      |         0         |
|      19      |         1         |
|      08      |         0         |

1当第一列中的值对该列唯一时,第二列才变为该列。

spencer7593

SET子句看起来正确。但这不是一个有效的声明。看起来我们缺少UPDATE关键字,即我们要更新的表的名称。

如果我们只想修改唯一的行,room_value则可以执行以下操作:

UPDATE mytable t
  JOIN ( SELECT r.room_value
              , COUNT(*) AS cnt
           FROM mytable r
          GROUP BY r.room_value
       ) s
    ON s.room_value = t.room_value 
   SET t.room_is_private = CASE WHEN s.cnt = 1 THEN 1 ELSE t.room_is_private END

s执行内联视图,并将结果具体化为派生表。这使我们获得的不同值room_value,以及相同的行数room_value

然后,我们将派生的故事重新连接到原始表,在room_value列上匹配,因此现在,对于表中的每一行,我们都可以知道具有相同的行数room_value

在该SET子句中,我们使用一个表达式来测试计数,并有条件地分配一个1(when cnt=1),否则将其值room_is_private保持不变。

我怀疑room_is_private当room_value不是唯一的时,我们可能还想将其设置为0,因此,与其将其设置room_is_private为当前值(即保持不变),不如分配一个0

UPDATE mytable t
  JOIN ( SELECT r.room_value
              , COUNT(*) AS cnt
           FROM mytable r
          GROUP BY r.room_value
       ) s
    ON s.room_value = t.room_value 
   SET t.room_is_private = CASE WHEN s.cnt = 1 THEN 1 ELSE 0 END

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅当另一列在R中具有良好的值时,才连续列的总和

如何仅当给定值存在于 Excel 的另一列中时才替换值

仅当键唯一时才将 Redis 计数器用作值

SQL:仅当在同一行中另一列具有不同的值时,才返回一列的值

仅当另一列的值满足条件时才获取列的分位数

SQL Access,仅当另一列中的所有值都在指定范围内时,才求和一列的值

仅当另一列的值为DAX时,PowerBi才计算日期

仅当另一列的值更改SQL Server时才自动增加该值

仅当另一列的值为负时,Postgres 才选择最大 ID

SQL Server:仅当同一表中的另一列是特定值时,才如何强制在一列中使用NOT NULL?

Pandas - 仅当 MULTIPLE COLUMNs 为空时才用另一列的值填充一列

如何从一列中的不同值采样而仅返回另一列中唯一的记录?

DAX的一列中仅唯一值的总和

如何插入基于另一列(SQL)中的值设置唯一ID的列?

从另一列创建一列列表,并在 Pandas 数据框中仅显示唯一值

仅当熊猫的某一列中存在某个值时,Groupby才进行计数

根据另一列中的唯一值汇总一列中的值

一列中的值的平均值,另一列中的唯一值

根据另一列中的重复值过滤一列中的唯一值

SQL 选择所有行,但仅当列值唯一时

我可以在按R中的另一列分组时列出一列的唯一值吗?

角度-仅当唯一时才推送到数组

仅当姓氏不唯一时,才显示名字

仅当使用 knex 唯一时才插入

dplyr仅在同一列的组中存在另一个值时才对值进行过滤

MySQL为另一列中的每个唯一值选择最新条目

如何计算与 MySQL 另一列中特定行关联的唯一值?

如何在MySQL的另一列中的两个唯一值之间更新一列?

MySQL计数一列的唯一性,而另一列在分组依据中具有单个值