作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下 MySQL 语句将值插入到空表中:
INSERT INTO buildings (name, description)
SELECT structures.name, structures.description
FROM structures
WHERE structures.structure_id IN (1, 2, 3, 4)
AND structures.deleted_at IS NULL;`
当我单独执行 SELECT 语句时,会返回预期的行。但是,当与 INSERT 结合使用时,我收到“数据截断”错误,因为该语句似乎试图插入已被软删除的行,因此其 ID 更改为类似 1__DEL__2016-06-21 18:19:53
的内容。 。作为证明这就是正在发生的事情的证据,删除 1
来自 WHERE IN 子句可防止错误。
结构表如下所示:
+-----------------------------+----------+----------------------------------+----------------------+
| structure_id | name | description | deleted_at |
+-----------------------------+----------+----------------------------------+----------------------+
| 1 | House | Place for people. | null |
+-----------------------------+----------+----------------------------------+----------------------+
| 1__DEL__2016-06-21 18:19:53 | Home | Another name for house. | 2016-06-21 18:19:53 |
+-----------------------------+----------+----------------------------------+----------------------+
| 2 | Barn | Place for animals. | null |
+-----------------------------+----------+----------------------------------+----------------------+
| 3 | Outhouse | Place to go when you need to go. | null |
+-----------------------------+----------+----------------------------------+----------------------+
所以,我很好奇(a)为什么会发生这种情况,以及(b)我如何能够插入我需要的数据,而不从源表中删除软删除的条目。
对我来说特别奇怪的是 WHERE IN 子句似乎同时匹配 1
和1__DEL__2016-06-21 18:19:53
,就好像它没有挑选出完全匹配的内容一样。
谢谢。
最佳答案
由于Where子句中的structure_id列是varchar,因此您应该用引号将IN子句中的值引起来。
关于mysql - 使用带有 WHERE IN 子句的 SELECT 语句执行 INSERT 尝试插入 SELECT 语句单独未返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50158864/
我是一名优秀的程序员,十分优秀!