mysql - 为什么删除了 3 行的 sql 查询拼图?

标签 mysql sql

谁能告诉我这其中的技术原因?

CREATE TABLE test (
  id varchar(3) NOT NULL,
  PRIMARY KEY  (id)
);

INSERT INTO test VALUES ('0'), ('1'), ('2'), ('ab'), ('bb');

select * from test;

DELETE FROM test WHERE id=0;

Which Deletes 3 rows from table test.

最佳答案

因为这个:

SELECT 0 = 'ab';
+----------+
| 0 = 'ab' |
+----------+
|        1 |
+----------+

要删除确切的行,请使用 BINARY 运算符,它将强制逐字节比较 -

DELETE FROM test WHERE id = BINARY 0;

关于mysql - 为什么删除了 3 行的 sql 查询拼图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581501/

相关文章:

mysql - nodejs mysql 使用其他模块/文件中的数据

mysql - 尝试从 mysql 中提取 '||' 符号之前的前 n 个字符

php - 一次查询中的对话用户列表

c# - 如何使用 C# 解析 SQL 文件?

sql - IF block 在条件不适用时执行

mysql select MAX 但显示不符合预期

php - 只有使用 php 登录才能访问页面

MySQL - 根据键/值查找表转换编码值

sql - 解析sql中的JSON字符串

sql - Ruby on Rails 网站运行缓慢;可能是 SQL 查询吗?