久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql實現查詢數據并根據條件更新到另一張表的方法示例

205次閱讀
沒有評論

共計 2591 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

本文實例講述了 mysql 實現查詢數據并根據條件更新到另一張表的方法。分享給大家供大家參考,具體如下:

原本的數據庫有 3 張表

travel_way:旅游線路表,存放線路的具體信息
traveltag:線路標簽表,存放線路目的地等信息
tagrelation:標簽對應表,存放線路和目的地的對應關系

因為業務邏輯的改變,現在要把它們合并為一張表,把 traveltag 中的目的地信息插入到 travel_way 中。

首先獲取到所有線路對應的目的地,以線路 ID 分組,合并目的地到一行,以逗號分隔。
復制代碼 代碼如下:SELECT travel_way.id,GROUP_CONCAT(traveltag.content) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id

先把查到的數據存放到了一個新建的表 mid 里
復制代碼 代碼如下:INSERT into mid (travelway_id,destination) SELECT travel_way.id,GROUP_CONCAT(traveltag.content) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id

然后將 mid 表的數據更新到 travel_way 里,因為是更新,所以不能用 insert into select from 語句了
復制代碼 代碼如下:update travel_way,mid set travel_way.destination = mid.destination where travel_way.id = mid.travelway_id

成功將目的地以逗號分隔的字符串形式導入 travel_way 表中

說一下用到的幾個方法,group_concat

group_concat([DISTINCT] 要連接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘ 分隔符 ’] ), 該函數能夠將相同的行組合起來


select id,group_concat(distinct price) from goods group by id;
+——+—————————–+
| id| group_concat(distinct price) |
+——+—————————–+
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
+——+—————————–+
3 rows in set (0.00 sec)

以 id 分組,把 price 字段的值打印在一行,逗號分隔,按照 price 倒序排列

select id,group_concat(price order by price desc) from goods group by id;
+------+---------------------------------------+
| id| group_concat(price order by price desc) |
+------+---------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)

insert into select from 將查詢到的記錄插入到某個表中,

INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name

要求目標 db2 必須存在,下面測試一下,有兩個表,結構如下

select * from insert_one;
+----+--------+-----+-----+
| id | name | age | sex |
+----+--------+-----+-----+
| 1 | 田小斯 | 25 | |
| 2 | 劉大牛 | 26 | |
| 3 | 鄭大錘 | 28 | |
| 4 | 胡二狗 | 30 | |
+----+--------+-----+-----+
4 rows in set

結果很尷尬,我是想要更新這張表的 sex 字段,而不是插入新的數據,那么這個命令只適用于要把數據導入空表中,所以在上面的實際需要中,我建立了新表 mid,利用 update 來中轉并更新數據
復制代碼 代碼如下:UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name
根據條件匹配,把表 1 的數據替換為(更新為)表 2 的數據,表 1 和表 2 必須有關聯才可以

update insert_one,insert_sex set insert_one.sex = insert_sex.sex where insert_one.id = insert_sex.id;
Query OK, 4 rows affected
select * from insert_one;
+----+--------+-----+-----+
| id | name | age | sex |
+----+--------+-----+-----+
| 1 | 田小斯 | 25 | 1 |
| 2 | 劉大牛 | 26 | 2 |
| 3 | 鄭大錘 | 28 | 1 |
| 4 | 胡二狗 | 30 | 2 |
| 5 | | | 1 |
| 6 | | | 2 |
| 7 | | | 1 |
| 8 | | | 2 |
+----+--------+-----+-----+
8 rows in set

成功將數據更新到 insert_one 表的 sex 字段中。

更多關于 MySQL 相關內容感興趣的讀者可查看本站專題:《MySQL 常用函數大匯總》、《MySQL 日志操作技巧大全》、《MySQL 事務操作技巧匯總》、《MySQL 存儲過程技巧大全》及《MySQL 數據庫鎖相關技巧匯總》

希望本文所述對大家 MySQL 數據庫計有所幫助。

向 AI 問一下細節

丸趣 TV 網 - 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2024-02-03發表,共計2591字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 龙游县| 湖北省| 沐川县| 吕梁市| 眉山市| 宁河县| 通许县| 米泉市| 丰县| 铜鼓县| 仙居县| 桦川县| 屏东市| 华宁县| 循化| 祁东县| 图们市| 普安县| 宁化县| 宣化县| 德庆县| 故城县| 威远县| 正定县| 汝州市| 霍城县| 闻喜县| 张家界市| 牡丹江市| 广水市| 邯郸县| 平顶山市| 阿巴嘎旗| 仁化县| 毕节市| 蓬安县| 潍坊市| 赤峰市| 正蓝旗| 贞丰县| 大冶市|