当前位置: 首页 > 面试题库 >

MySql中的条件更新

吴唯
2023-03-14
问题内容

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:

我的表是例如“关系”

userid1 | userid2 | 名称1 | 名称2

我举个例子:

SELECT * 
  FROM relation 
 WHERE (userid1 = 3 AND userid2 = 4)
    OR (userid1 = 4 AND userid2 = 3);

输出:

4 | 3 | 帐单| 杰克

我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。

我虽然如此

UPDATE relation 
   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END 
        WHEN userid2 = 3 THEN SET name2 = 'jack' END 
 WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3);

但这是行不通的!有任何想法吗?首先十分感谢。


问题答案:

不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE

UPDATE relation 
   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
WHERE (userid1 = 3 AND userid2 = 4) 
   OR (userid1 = 4 AND userid2 = 3);

这是 SQLFiddle 演示。



 类似资料:
  • 问题内容: 看来我在 条件查询 方面遇到了很大的问题。 我必须做一个 有条件的更新 。我在这里写下我想做的事: 显然,这是行不通的。 任何的想法? 问题答案: 支持声明。 或者你也可以使用

  • 我无法使用UDPATE AND IF条件更新表中的2个字段。需要帮助。 我有一个发票表格,如果字段号=0,我需要从同一表格中的容量和字段号=1更新字段数量。 我的sql语句不起作用: 错误消息: -您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第1行的“IF(Nos=0)WHERE id=id”附近使用的正确语法

  • 问题内容: 我有3个字段的“任务”表: 日期 优先级(0,1,2) 完成(0,1) 我想要实现的是对整个表按“完成”标志排序,未完成的任务应按优先级排序,而已完成的任务应按日期排序: 从按完成的asc的任务顺序中选择* 如果完成= 0,则按优先级依次排序 如果完成= 1,则另外按日期顺序排序 不使用工会就可以在MySQL中做到这一点吗? 谢谢。 问题答案: 您可以尝试在使用aux来计算aux时根据

  • 问题内容: 我有两个这样的表,两个都是单独的表 另一个表包含以下结构 我需要从表II中选择AccountNo或TempAccountNo,Mycolumn,条件是 我需要选择 我需要选择 我该如何实现。 问题答案:

  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复表达: 或包装查询

  • 问题内容: 是否可以在MySQL中执行UPDATE查询,仅在满足特定条件时才更新字段值?像这样: 换一种说法: 正确的方法是什么? 问题答案: 是! 这里有另一个例子: 之所以可行,是因为MySQL不会更新该行(如果没有更改),如docs中所述: 如果将列设置为其当前值,MySQL会注意到这一点,并且不会对其进行更新。