【问题标题】:T-SQL Select and count from different table?T-SQL 从不同的表中选择和计数?
【发布时间】:2011-07-12 16:09:02
【问题描述】:

我有一个表 (Threads),其中包含一个字段 (id)。我想从Threads 中选择每一行,以及Posts 表中的行数,其中Posts.thread 字段与Threads.id 相同。

这如何在 SQL 中完成?

(类似这样的伪 SQL:SELECT *, COUNT(* FROM Posts WHERE Posts.id=Threads.id) FROM Threads

【问题讨论】:

    标签: asp.net sql tsql


    【解决方案1】:

    当然 - 像这样?

    SELECT 
        t.ThreadID,
        (SELECT COUNT(*) FROM dbo.Posts p WHERE p.ThreadID = t.ThreadID)
    FROM
        dbo.Threads t
    

    【讨论】:

    • 如果您真的只想要 ID(或者只是几列,而不是加载),那么我希望 Waqas Raja 使用 join & group by 的答案比这表现得更好。
    • 我们如何对(SELECT COUNT(*) FROM dbo.Posts p WHERE p.ThreadID = t.ThreadID) 列进行排序?
    【解决方案2】:
    SELECT t.id, COUNT(p.thread)
    FROM Threads AS t
        LEFT OUTER JOIN Posts AS p
            ON t.id = p.thread
    GROUP BY t.id
    

    【讨论】:

    • 贴在帖子上,这正是我正要给出的确切答案。
    • 你应该使用左连接,否则你不会得到每一行
    • 第二个答案会有更好的表现,这就是我投票的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多