sql - 根据另一列的数据将数据插入列
问题描述
如果另一列中存在特定单词,我希望有一个包含数据的附加列(如果 column_a 中有“foo”或“bar”,则 column_b 应该为 1)。
INSERT INTO table_x_copy
SELECT (CASE WHEN (column_a LIKE '%foo%' OR column_a LIKE '%bar%') THEN 1 ELSE 0 END) AS column_b
FROM table_x
我收到错误:
列名或提供的值的数量与表定义不匹配。
不管有没有column_b
预先添加。
解决方案
如果要更新现有表,则应使用 UPDATE 语句。INSERT 只是将新行添加到表中。
UPDATE table_x_copy
SET column_b = (CASE WHEN (column_a LIKE '%foo%' OR column_a LIKE '%bar%') THEN 1 ELSE 0 END)
如果您的表不包含 column_b 列,只需在 UPDATE 之前执行以下查询:
ALTER TABLE table_x_copy
ADD column_b int;
推荐阅读
- thrift - Apache Thrift 的 C# TThreadPoolAsyncServer 实现非常慢
- python - 如何仅在一行中获取n个数字并将它们放入列表中并根据列表在python中打印字符?
- java - 为什么我们必须多次调用 getCurrentUser() Firebase?
- javascript - 为什么 XMLHttpRequest.onreadystatechange 返回状态而 XMLHttpRequest.onload 没有?
- safari - Safari 上的像素边界半径问题
- r - R - 嵌套列表参数的子集列表
- python - 我需要在 django 上运行查询,但无法生成算法
- html - 您如何发布到 URL?
- python - 在python中将FFMPEG子进程输入到FFMPEG RTMP流?
- java - Android 位置更新和活动识别在前台的同一服务中处理