在 MySQL 裡面,想要將兩個以上的字串合再一起,應該怎麼做呢?
可使用以下方法:
/* 該語法會將 字串1 ~ 字串N 全部串再一起 */
CONCAT( 字串1, 字串2, 字串3, ... , 字串N );
可使用以下方法:
/* 該語法會將 字串1 ~ 字串N 全部串再一起 */
CONCAT( 字串1, 字串2, 字串3, ... , 字串N );
/* 照表欄位順序給值 */
INSERT INTO `表名稱` VALUES (`欄位1值`, `欄位2值`, `欄位3值`, ...);
/* 也可指定欄位給值 */
INSERT INTO `表名稱` (`欄位1`, `欄位2`, `欄位3`) VALUES (`欄位1值`, `欄位2值`, `欄位3值`);
/* 照表欄位順序給值 */
INSERT INTO `表名稱` VALUES (`欄位1值`, `欄位2值`, `欄位3值`, ...), (`欄位1值`, `欄位2值`, `欄位3值`, ...), (`欄位1值`, `欄位2值`, `欄位3值`, ...);
/* 也可指定欄位給值 */
INSERT INTO `表名稱` (`欄位1`, `欄位2`, `欄位3`) VALUES (`欄位1值`, `欄位2值`, `欄位3值`), (`欄位1值`, `欄位2值`, `欄位3值`), (`欄位1值`, `欄位2值`, `欄位3值`);
/* 照表欄位順序給值 */
INSERT INTO `表名稱` (SELECT `欄位1`, `欄位2`, `欄位3`, ... FROM `表名稱`);
/* 也可指定欄位給值 */
INSERT INTO `表名稱` (`欄位1`, `欄位2`, `欄位3`) (SELECT `欄位1`, `欄位2`, `欄位3` FROM `表名稱`);
/* 若欄位不一致或者欄位名稱不一致等其它問題, 也可以直接給值 */
/* 照表欄位順序給值 */
INSERT INTO `表名稱` (SELECT `欄位1`, 直接給值2, `欄位3`, ... FROM `表名稱`);
/* 也可指定欄位給值 */
INSERT INTO `表名稱` (`欄位1`, `欄位2`, `欄位3`) (SELECT `欄位1`, 直接給值2, `欄位3` FROM `表名稱`);
`id` `name`
1 Bill
2 Bob
3 Carl
4 David
5 Tom
`id` `name` `lv` `role_name`
/* 照表欄位順序給值, 因為這邊沒有指定欄位, 所以每個欄位都必須給值,
就算編號會自動累加, 我們也不能跳過, 必須給予 NULL 的值 */
INSERT INTO `player` VALUES (NULL, 'player1', 1, 'role001');
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
/* 也可指定欄位給值, 給值的順序跟指定欄位的順序是一致的 */
INSERT INTO `player` (`name`, `lv`, `role_name`) VALUES ('player2', 1, 'role002');
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
/* 指定欄位順序打亂 */
INSERT INTO `player` (`lv`, `name`, `role_name`) VALUES (1, 'player3', 'role003');
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
/* 照表欄位順序給值, 因為這邊沒有指定欄位, 所以每個欄位都必須給值,
就算編號會自動累加, 我們也不能跳過, 必須給予 NULL 的值 */
INSERT INTO `player` VALUES (NULL, 'player4', 1, 'role004'), (NULL, 'player5', 1, 'role005'), (NULL, 'player6', 1, 'role006');
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
4 player4 1 role004
5 player5 1 role005
6 player6 1 role006
/* 也可指定欄位給值, 給值的順序跟指定欄位的順序是一致的 */
INSERT INTO `player` (`name`, `lv`, `role_name`) VALUES ('player7', 1, 'role007'), ('player8', 1, 'role008'), ('player9', 1, 'role009');
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
4 player4 1 role004
5 player5 1 role005
6 player6 1 role006
7 player7 1 role007
8 player8 1 role008
9 player9 1 role009
/* 照表欄位順序給值,
因為兩張表的欄位不一致所以這邊我們直接給值 */
INSERT INTO `player` (SELECT NULL, `name`, 1, 'roleName' FROM `user`);
/* 以下為執行後結果 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
4 player4 1 role004
5 player5 1 role005
6 player6 1 role006
7 player7 1 role007
8 player8 1 role008
9 player9 1 role009
10 Bill 1 roleName
11 Bob 1 roleName
12 Carl 1 roleName
13 David 1 roleName
14 Tim 1 roleName
/* 也可指定欄位給值 */
INSERT INTO `player` (`name`) (SELECT `name` FROM `user`);
/* 以下為執行後結果,
因為其它欄位我們沒有給值, 所以預設為空的 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
4 player4 1 role004
5 player5 1 role005
6 player6 1 role006
7 player7 1 role007
8 player8 1 role008
9 player9 1 role009
10 Bill 1 roleName
11 Bob 1 roleName
12 Carl 1 roleName
13 David 1 roleName
14 Tim 1 roleName
15 Bill 0
16 Bob 0
17 Carl 0
18 David 0
19 Tim 0
/* 照指定欄位給值,
因為欄位不一致所以這邊我們直接給值 */
INSERT INTO `player` (`name`, `lv`, `role_name`) (SELECT `name`, 1, `name` FROM `user`);
/* 以下為執行後結果,
因為 `role_name` 欄位我們一樣給 `name` 的值, 所以名稱會跟 `name` 一樣 */
`id` `name` `lv` `role_name`
1 player1 1 role001
2 player2 1 role002
3 player3 1 role003
4 player4 1 role004
5 player5 1 role005
6 player6 1 role006
7 player7 1 role007
8 player8 1 role008
9 player9 1 role009
10 Bill 1 roleName
11 Bob 1 roleName
12 Carl 1 roleName
13 David 1 roleName
14 Tim 1 roleName
15 Bill 0
16 Bob 0
17 Carl 0
18 David 0
19 Tim 0
20 Bill 1 Bill
21 Bob 1 Bob
22 Carl 1 Carl
23 David 1 David
24 Tim 1 Tim