[英]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.