【问题标题】:Why does primary key repeat when I join two tables in SQL?为什么我在 SQL 中连接两个表时主键重复?
【发布时间】:2021-04-19 22:59:34
【问题描述】:

假设我们有两个表,两者的键都是name_id

使用以下代码:

SELECT * FROM table1 INNER JOIN table2 ON table1.name_id = table2.name_id

我得到一个重复 name_id 的输出,即:

name_id column_2 name_id column_4
1       x        1       y

我在 R 中使用 DBI 包在 SQL 中进行查询。知道为什么name_id 会重复吗?

【问题讨论】:

    标签: sql r dbi


    【解决方案1】:

    select *from 子句中的所有表中选择所有 列,按from 子句中表的出现顺序排列。

    一个(合理的)例外是当您使用USING 子句时:

    SELECT *
    FROM table1 INNER JOIN
         table2 
         USING (Name_id);
    

    但是,并非所有数据库都支持这种标准语法。

    【讨论】:

    • 谢谢,这行得通。另外,您知道查询如何还可以返回连接结果中存在的总行数吗?
    • @HelpNeeded4 。 . .您可以使用COUNT(*) OVER () 将该计数添加到每一行。
    • 很好 - 虽然当我尝试将其添加到代码末尾时,它说存在语法错误。如果可能的话,你能指出它会去哪里吗?
    • @HelpNeeded4 。 . . select *, count(*) over () 应该适用于大多数数据库。你还没有指定你的数据库,这至少是相当标准的 SQL。
    • @HelpNeeded4 。 . .好吧,这回答了你在这里提出的问题。如果您有不同的问题,则应将其作为问题提出。
    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 2018-09-17
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多