我正在尝试更新表中的值,但是我需要添加一些条件。我找到了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会注意到这一点,并且不会对其进行更新。