iT邦幫忙

0

MySQL 解說看不懂,請各位大大出手幫忙解讀

各位前輩好,我在整理中華職棒逐球資料,在測試SQL code後,MySQL workbench回饋的訊息有些地方不明瞭,請各位出手相助

主要table是chinese_column_full_season, 有58876 rows,column-場地在update前大部分是空白的
輔助用table是game_information, 有column-場地,
兩張table靠column-game_no比對
這是我的SQL code, 要把cpbl_chinese_column_full_season的場地update

UPDATE `test_chinese_column_full_season` t, `game_information` g
SET t.`場地` = g.`ball_park` WHERE t.`game_no` = g.`game_no`

update後, mysql回饋訊息如下圖:
https://ithelp.ithome.com.tw/upload/images/20201213/20085948XzIjhV0P1L.jpg

我對上面這段code的理解是,game_no比對通過後, 就會把t.場地 的內容改成 g.ball_park,那麼訊息應該要出現changed: 58826 rows, 但卻只出現changed: 51108 rows
之後我用了下面的code進行了一次確認

SELECT distinct `場地`
FROM cpbl.test_chinese_column_full_season

只有出現這5個選項:
https://ithelp.ithome.com.tw/upload/images/20201213/20085948vsEvEx2Uah.jpg

這是否代表著我的主要table,場地那個colmn,已經全部都update了?
請各位幫幫忙解讀一下,感恩!!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
rogeryao
iT邦超人 8 級 ‧ 2020-12-13 17:21:21
最佳解答
CREATE TABLE test_chinese_column_full_season(
`場地` varchar(60), 
`game_no` varchar(60));

INSERT INTO test_chinese_column_full_season
           (`場地`,`game_no`)
VALUES
('A','1'),
('B','1'),
('C','1'),
('D','1'),
('E','1'),
('A','2'),
('B','2'),
('C','2'),
('D','2'),
('E','2'),
('A','3'),
('B','3'),
('C','3'),
('D','3'),
('E','3');
-- 方法一:未變更資料
SELECT *
FROM test_chinese_column_full_season AS t
WHERE t.`場地` NOT IN (
SELECT g.`ball_park`
FROM game_information AS g
WHERE t.`game_no` = g.`game_no`
)
-- 方法二:未變更資料筆數
SELECT COUNT(1) AS `Counter`
FROM test_chinese_column_full_season AS t
WHERE t.`場地` NOT IN (
SELECT g.`ball_park`
FROM game_information AS g
WHERE t.`game_no` = g.`game_no`
)
-- 方法三:變更後資料資料(目視差異)
SELECT *
FROM test_chinese_column_full_season;

Demo

rogeryao
我的update有將場地更新了,但我不會確認...
謝謝roger大大,學了好幾招確認的手法!!

我要發表回答

立即登入回答