3

我正在尝试编写一个 SQL,它获取与特定列具有相同值的表中的行数。在这种情况下,表格有一个名为“标题”的列。对于我返回的每一行以及该行的其他列的值,我想获取表中与该行的“标题”值具有相同值的行数。现在,我最好的方法是:select firstname, lastname, city, state, title, (select count from myTable where title = title);

显然,这给我的只是我的子选择中表中的行数。如何让标题右侧 = 引用列标题的值?

感谢任何人的帮助。

4

3 回答 3

2

这称为“相关子查询”。它是这样的:

select firstname, lastname, title, 
              (select count(1) from table where title=a.title) title_count 
from table a;
于 2012-07-27T20:28:15.420 回答
1

这未经测试,但我认为它应该适用于您正在尝试做的事情

WITH titles AS (
    SELECT
        Title
        , COUNT(*) AS Occurences
    FROM myTable
    GROUP BY Title
)
SELECT 
    t1.FirstName
    , t1.LastName
    , t1.City
    , t1.state
    , t1.title
    , titles.Occurences
FROM myTable AS t1
INNER JOIN titles ON t1.Title = titles.Title
于 2012-07-27T20:30:48.420 回答
1

大多数数据库都支持窗口/分析功能。如果您使用其中之一(例如 SQL Server、Oracle、Postgres),您可以这样做:

select t.firstname, t.lastname, t.title, t.city, t.state,
       count(*) over (partition by title) as numwithtitle
from t
于 2012-07-27T21:22:25.610 回答