SQL DISTINCT INNER JOIN 和 LEFT JOIN 以及 .NET C# PrimaryKey

发布于 2025-01-03 18:29:04 字数 799 浏览 1 评论 0原文

我有 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 作为主键。

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

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

I have 3 tables A, B, and C. I want to get the subId and text for each id. I also want to know IF the id has some eId linked to it.

I've used INNER JOIN on A and B and then LEFT JOIN'd that result with tabel C. My SQL string so far is:

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'

The problem is that C.eId has multiple entries for each id. So I'm getting output like this:

=================================
  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

I want to remove the lines like the last one ("4 e12 etc p4325") because I already know that 4, e12 has some other eId linked to it. I need id and subId to be PrimaryKeys.

How do I do this? DISTINCT worked until I added multiple id's to an eId.

Edit: I use MSSQL if that makes a difference.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谈下烟灰 2025-01-10 18:29:04

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

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'

I don't recall if it works this way, try it and tell me:

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'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文