在SELECT语句中向外键添加字符

时间:2010-05-21 13:59:44

标签: sql mysql

我有两张桌子,例如table_1和table_2。我想从table_2中选择带有来自table_1的id的外键,但table_2中的外键值是table_1中带有前缀的id。

table_1.id = 1

table_2.fk_id = fk1

如何为id添加值,以便我可以选择fk?

谢谢!

彼得

2 个答案:

答案 0 :(得分:3)

你可以这样做

SELECT * FROM table_1 INNER JOIN table_2 ON CONCAT('fk',CAST(table_1.id AS CHAR))=table_2.fk_id)

然而,这将是非常缓慢的。我建议使用table2上的更新查询将所有fkX ID更改为X,或者在table1上创建计算列,创建添加了fk前缀的id。

它之所以慢的原因是因为无法使用索引完成连接。当您将密钥类型更改为可直接比较时,可以将它们编入索引并加快连接速度。

答案 1 :(得分:0)

这里的真正问题是它不是真正的外键。它根本不具备可执行性。我想我可以假设你正在使用MyISAM表吗?

你应该让它们完全相同,并考虑添加一个额外的列来存储前缀