mysql - 切换数据库中的记录

标签 mysql

我想要做的是切换数据库中记录的值。这是一个例子:

+--------------+--------- +-------------------+
|ingredient_id | quantity | preferred_measure |
+--------------+----------+-------------------+
|           40 |     5.00 | tbsp              |
|           28 |     5.00 | tsp               |
+--------------+----------+-------------------+

我想要做的是更改preferred_measure并将它们切换为如下所示:

+--------------+--------- +-------------------+
|ingredient_id | quantity | preferred_measure |
+--------------+----------+-------------------+
|           40 |     5.00 | tsp               |
|           28 |     5.00 | tbsp              |
+--------------+----------+-------------------+

如果我只更改一个,那么所有记录都将具有相同的值,并且我将无法找到需要更改为其他值的记录,因为所有记录都将相同。

请记住,数据库中这些记录的数量超过 10k。

为了澄清一点,preferred_measure 是 enum('tsp'.'tbsp') 的类型,不可能更改为这两个值之外的其他值。

最佳答案

这只会更改两个字符串:

UPDATE YOUR_TABLE SET preferred_measure =
  IF(preferred_measure = 'tsp', 'tbsp',
    IF (preferred_measure = 'tbsp', 'tsp', preferred_measure)); 

您还可以使用 WHERE 来加速查询:

UPDATE YOUR_TABLE SET preferred_measure =
  IF(preferred_measure = 'tsp', 'tbsp',
    IF (preferred_measure = 'tbsp', 'tsp', preferred_measure))
WHERE preferred_measure IN('tbsp','tsp'); 

关于mysql - 切换数据库中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841165/

相关文章:

mysql - 如何将某些表设置为只读但允许用户创建新表?

mysql - 计算golang中的行数

php - 如何将 count() group by 从 mysql 保存到 php 变量中

mysql - 两次使用复合键连接表

mysql - 使用自动生成列的值进行后续查询

mysql - 创建表的统计信息,以防万一

PHP代码使用_POST方法在MySql数据库中插入空白记录

mysql - 需要将行合并成两列mysql

python - 连接 Python 和 MySQL - 入门

mysql - 如何连接到 vagrant 中的数据库