我想从一个表中筛选出符合条件的10条记录,每条记录一个字段,并将这10个值,作为新表或者视图的10个字段的值更新到新表中,然后展示出这条新增的记录。请帮我写出mysql的代码,这个代码希望能一次执行的代码,而不是分段的代码
时间: 2024-05-16 19:16:20 浏览: 12
假设你的原始表名为`original_table`,需要筛选的字段为`filter_field`,需要更新的10个字段为`field1`~`field10`,条件为`filter_condition`,新增记录的ID为`new_record_id`,新表名为`new_table`。
可以使用以下代码实现:
```sql
INSERT INTO new_table (id, field1, field2, field3, field4, field5, field6, field7, field8, field9, field10)
SELECT new_record_id, MAX(CASE WHEN field_name = 'field1' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field2' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field3' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field4' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field5' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field6' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field7' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field8' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field9' THEN field_value ELSE NULL END),
MAX(CASE WHEN field_name = 'field10' THEN field_value ELSE NULL END)
FROM (
SELECT @rownum := @rownum + 1 AS row_number, field_name, field_value
FROM original_table
CROSS JOIN (SELECT @rownum := 0) r
WHERE filter_condition
ORDER BY some_field
LIMIT 10
) t
GROUP BY row_number;
```
需要注意的是,此处使用了`MAX CASE WHEN`语法,可以将符合条件的一条记录中的多个字段值分别赋值给新表中的不同字段。同时使用了`GROUP BY`语句,将10条记录合并为1条记录插入到新表中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)