SQL SELECT id和同一表中的项目数

时间:2014-10-02 01:51:38

标签: sql

我有以下SQL表列...

id | item | position | set
---------------------------    
 1 |   1  |     1    | 1
 2 |   1  |     1    | 2
 3 |   2  |     2    | 1
 4 |   3  |     2    | 2

单个查询中,我需要获取与set='1'匹配的所有行ID,同时计算同一个表中引用item个数的实例数量无论set

到目前为止,我一直在修补......

SELECT 
    j1.item, 
    (SELECT count(j1.item) FROM table_join AS j2) AS count 
FROM 
    table_join AS j1 
WHERE 
    j1.set = '1';

...虽然子查询返回多行。使用上述数据,第一项应该有2,所有其他项应该有1。

2 个答案:

答案 0 :(得分:3)

这应该有效:

SELECT
    j.id
,   (SELECT COUNT(*) FROM table_join i WHERE i.item = j.item) AS count
FROM table_join j
WHERE set='1'

这与您的查询类似,但子查询与带有WHERE子句的外部查询协调。

Demo

答案 1 :(得分:2)

作为一种值得测试性能的替代方法,您可以使用JOIN而不是依赖子查询;

SELECT tj.id, COUNT(tj2.id) count
FROM table_join tj
LEFT JOIN table_join tj2 ON tj.item = tj2.item
WHERE tj.`set`=1
GROUP BY tj.id

An SQLfiddle to test with

相关问题