mysql - SQL中“UPDATE table SET column1 = value AND column2 value WHERE条件”是什么意思?
问题描述
如果将语句中的“,”UPDATE
替换AND
为,SQL中的含义是什么?
正常更新声明:
UPDATE table
SET column1 = value ,
column2 = value
WHERE condition
我的问题陈述:
UPDATE table
SET column1 = value AND column2 = value
WHERE condition
受影响的行似乎不同,所以我想知道我的问题语句在 SQL 中的含义是什么?
插入查询后(从原始):更新测试集 column1 = 2 ,column2 =5
插入查询后(来自原始):更新测试集 column1 = 2 AND column2 =5
如果我插入查询(来自原始):更新测试集 column1 = 2 AND =4
解决方案
2 AND b = 1
尽管有些数据库会评估它而其他数据库不会,但编写它可能是错误的
如果您打算一次性设置多个列,则必须使用逗号
如果你使用这个结构,也许有些数据库会根据位逻辑运算处理它,或者它们会将任何非零值视为真/假,将任何零值视为假/真,而其他数据库将根据布尔逻辑运算处理它
在示例草莓中友好地发布:https ://www.db-fiddle.com/f/3KawkrD8QfjJu6YyfuzB7U/0
将数据库设置为 MySQL 并运行它;它成功了 - MySQL 可能将 2 视为 true,因此操作变为:
SET c = true and true --when b = 1
SET c = true and false --when b=0
您可以看到您的 c 列根据事实设置为 1 或 0
SET c = (2 AND (b = 1))
^^^^^^^^^^^^^^^
This whole thing is turned into a value.
for C, it does NOT set column B at all
现在将数据库更改为 Postgres 并再次运行它
这一次你得到一个错误,即 AND 需要布尔操作数,并且整数 2 是不可接受的
因此在 Postgres 中,虽然这可能是可以接受的:
SET d = (c=1 AND b=2) --sets a true or false value for d
不接受您的其他表格
--
长话短说,您可能打算设置多个列:使用逗号。
推荐阅读
- discord.js - 我正在尝试在 discord.js 中创建超过 1 个输入命令
- emacs - 防止 clang-format 删除 emacs 的换页符
- json - 如何为 HERE 的 Fuel API 授权客户端?
- javascript - 如何使用 .Net Core 3 实现 UpdatePanel 功能
- c# - 为什么我们默认允许溢出?
- javascript - JavaScript RegExp 捕获组
- python - 无法在 python 中使用 calcbsimpvol 函数找到隐含波动率
- php - PHP/HTML - 需要 form_1 获取用户名,然后提交后转到 form_2,它会记住用户名并打招呼
- python - 在蟒蛇龟上画一个正方形
- linux - 语法错误:预期操作数(错误标记为“+”)