繁体   English   中英

在SELECT语句中将字符添加到foreign_key

[英]Adding a character to a foreign_key in SELECT statement

我有两个表,例如table_1和table_2。 我想从table_2中选择外键,其id为table_1,但是table_2中外键的值是table_1的id,并带有前缀。

table_1.id = 1

table_2.fk_id = fk1

如何为ID添加一个值,以便可以选择fk?

谢谢!

彼得

你可以这样

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。

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

真正的问题是,这不是真正的外键。 根本无法执行。 我想我可以假设您正在使用MyISAM表?

您实际上应该使它们具有完全相同的值,并考虑添加其他列以存储前缀

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM