【问题标题】:Adding a character to a foreign_key in SELECT statement在 SELECT 语句中向 foreign_key 添加字符
【发布时间】:2010-05-21 22:13:19
【问题描述】:

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

table_1.id = 1

table_2.fk_id = fk1

如何向 id 添加一个值以便选择 fk?

谢谢!

彼得

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    你可以这样做

    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。

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

    【讨论】:

    • 这正是我想要的!谢谢!彼得
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多