【问题标题】:Join table with different primary key values连接具有不同主键值的表
【发布时间】:2020-02-05 23:25:41
【问题描述】:

我想加入两个具有不同主键值的表,如下所示

表 A

id     name
1      John
2      Smith

和表 B

id     name
1-x    Foo
2-x    Bar

我尝试在查询中使用 LIKE 语句,但它不会停止执行。

SELECT * FROM A a JOIN B b ON a.id LIKE b.id +'%'

有没有什么有效的方法来加入这两个表?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    如果你使用这样的查询:

    SELECT *
    FROM A a JOIN
         B b
         ON a.id || '-x' = b.id;
    

    那么 SQLite 应该能够使用B(id) 上的索引进行查询。值得一试。

    【讨论】:

      【解决方案2】:

      不,没有有效的加入方式。

      这并不意味着它不能完成(它可以),但它可能没有意义。

      主键不应该好看或性感。它们是唯一的行标识符。如果您有一个具有类似值的主键,那是因为您可能希望将其公开或显示在某处;这不是他们的目标。

      如果您需要一个漂亮的行标识符,我建议您创建一个甚至可以自动生成的辅助唯一列。

      底线,保持主键简单

      【讨论】:

      • 是的,我认为一种方法是使用子字符串创建一个临时列
      猜你喜欢
      • 2022-01-13
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多