我错误地在MySql表中添加了一些引用。我想一个例子会告诉你我的问题(我真的希望如此)。这些是我的表结构的一个例子:
tableMain
id (int)
trackid(varchar)
data(text)
tableArtist
idArtist(int)
ref(varchar)
artist(varchar)
tableEvent
idEvent(int)
ref(varchar)
event(varchar)
这些是数据:
tableMain
1 abc primo
2 def secondo
3 ghi terzo
tableArtist
1 abc artist2
2 abc artist4
3 ghi artist5
4 def artist1
5 ghi artist3
tableEvent
1 def event1
2 abc event5
3 222 event3
4 ghi event2
5 abc event4
我想更改tableEvent和tableArtist上的ref值,替换为tableMain的corespondent id的值:
tableMain
1 abc primo
2 def secondo
3 ghi terzo
tableArtist
1 1 artist2
2 1 artist4
3 2 artist5
4 2 artist1
5 3 artist3
tableEvent
1 2 event1
2 1 event5
3 2 event3
4 3 event2
5 1 event4
是否有可能在MySql上或我需要一种脚本(如PHP)来完成它?
答案 0 :(得分:2)
UPDATE tableArtist, tableMain
SET tableArtist.ref = tableMain.id
WHERE tableArtist.ref = tableMain.trackid
UPDATE tableEvent, tableMain
SET tableEvent.ref = tableMain.id
WHERE tableEvent.ref = tableMain.trackid
编辑:为了解决@ colinmarc的问题,在更新数据后你可以:
ALTER TABLE tableArtist MODIFY ref INT;
ALTER TABLE tableEvent MODIFY ref INT;
答案 1 :(得分:1)
你可以用几个查询来做,是的。使用您的命名约定:
ALTER TABLE tableArtist ADD COLUMN idMain int;
UPDATE tableArtist SET idMain = (
SELECT id FROM tableMain where tableArtist.ref = tableMain.trackid
);
然后,一旦你知道数据是好的:
ALTER TABLE tableArtist DROP COLUMN ref;