我怎么能翻译这个参考

时间:2011-04-22 20:09:31

标签: mysql

我错误地在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)来完成它?

2 个答案:

答案 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;