【问题标题】:SQL DISTINCT INNER JOIN and LEFT JOIN and .NET C# PrimaryKeySQL DISTINCT INNER JOIN 和 LEFT JOIN 和 .NET C# PrimaryKey
【发布时间】:2012-02-28 18:48:03
【问题描述】:

我有 3 个表 A、B 和 C。我想获取每个 id 的 subId 和文本。我也想知道 id 是否有一些 eId 链接到它。

我在 A 和 B 上使用了 INNER JOIN,然后用表 C 左连接了该结果。到目前为止,我的 SQL 字符串是:

SELECT DISTINCT A.id,A.subId, B.text, C.eId
FROM A
INNER JOIN B ON A.id=B.id
LEFT JOIN C ON A.id=C.id
WHERE B.text='something'

问题是 C.eId 每个 id 都有多个条目。所以我得到这样的输出:

=================================
  id  |  subId  |  text  |  eId  
  1        e12     etc       
  2        e12     etc       
  2        t23     etc     p1111
  3        e12     etc       
  4        e12     etc     p1234
  4        e12     etc     p4325

我想删除最后一行(“4 e12 等 p4325”),因为我已经知道 4, e12 有一些其他 eId 链接到它。我需要 id 和 subId 作为 PrimaryKeys。

我该怎么做? DISTINCT 一直有效,直到我向一个 eId 添加了多个 id。

编辑:如果有影响,我会使用 MSSQL。

【问题讨论】:

    标签: sql primary-key left-join distinct inner-join


    【解决方案1】:

    我不记得它是否可以这样工作,请尝试并告诉我:

    SELECT DISTINCT A.id,A.subId, B.text,
    (select top 1 C.eId from C where C.id = A.id) AS eId
    FROM A
    INNER JOIN B ON A.id=B.id
    WHERE B.text='etc'
    

    【讨论】:

    • @JoenJ.Olsen 再试一次。如果可行,别忘了vote upaccept the answer
    • 如果我删除了#A、#B 和#C,它会起作用。谢谢! :) 当我获得 15 个声望来投票给你时,我会回来的 :)
    • @JoenJ.Olsen ups,我正在测试:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2012-08-17
    • 2014-03-11
    • 1970-01-01
    • 2015-02-03
    • 2016-04-28
    相关资源
    最近更新 更多