5

我有一个让我发疯的基本 SQL 问题。如果我有一个 mySQL 表,例如下面。我如何从第一个空行(在本例中为第 3 行)开始向第 2 列添加另外 80 多个值。

我一直在尝试使用 INSERT 或 UPDATE 进行一些查询,但最接近的是将值添加到从最后定义的 ID 值开始的第 2 列(例如第 80 行)。

   ID  |    Column 2    |
--------------------------------
  1    |    value       |
  2    |    value       |
  3    |                |
  4    |                |
  5    |                |

etc

真正的表有大约 10 列,所有列都有数据,但我只需要添加内容(CSV 格式的大约 80 个不同字符串的列表到其中一列)

如果有人能指出我正确的方向,我将不胜感激。

4

2 回答 2

3

我会将数据加载到具有相同结构的单独表中,然后使用连接或子查询更新目标表以确定哪些列当前为空。

即加载临时表,然后:

update target_table set column2 = (select column2 from interim_table where ... 
where column2 is null

(缓慢但直观)

update target table, interim_table 
set target table.column2 = interim_table.column2 
where target table... = interim_table...
and target_table.column2 is null

(更好的性能)

于 2013-06-20T13:17:27.733 回答
0

为什么不首先运行查询以找出第一个空行 ID 号?你可以使用SELECT COUNT(*) FROM TABLE_NAME它。

然后创建一个for循环并在内部运行一个INSERT查询,从前一个查询返回的值开始。只是一个划痕:

for(var id = last; id < totalOfQueries; id++)
{
  var query = new MysqlCommand("INSERT INTO table VALUES ('" + id + "',....);
}
于 2013-06-20T13:22:03.830 回答