我的问题很简单,但是我找不到任何解决方案。 请帮助我某人,因为我感觉很糟糕。
我的桌子是这个。
users_table:
id | name | admin | property_id
-----------------------------------
1 | x | 1 | 0
2 | y | 1 | 0
3 | z | 0 | 1
4 | t | 0 | 2
4 | u | 0 | 2
4 | o | 0 | 2
我有两个records
,分别是admin
和其他一些records
,它们通过将property_id
与id
匹配而属于这两个记录之一。
最后,我想要的是admin
行数据及其count
的{{1}}。
问题在于数据全部在同一表中。
这就是所需查询的输出。
properties
我希望我能解释得足够清楚。 预先感谢。
答案 0 :(得分:2)
您似乎想要自联接和聚合:
select t1a.id, t1a.name, t1a.admin, count(t1.id) as property_count
from table1 t1a left join
table1 t1
on t1a.id = t1.property_id
where t1a.admin = 1
group by t1a.id, t1a.name, t1a.admin;
顺便说一句,没有join
的情况下,这是一种比较棘手的方法:
select (case when admin = 1 then id else property_id end) as id,
max(case when admin = 1 then name end) as name,
max(admin) as admin,
sum( admin <> 1 ) as property_count
from table1 t1
group by (case when admin = 1 then id else property_id end);
答案 1 :(得分:2)
http://sqlfiddle.com/#!9/5ad1fb/4
SELECT u.*, COUNT(ut.id) property_count
FROM users_table u
LEFT JOIN users_table ut
ON u.id = ut.property_id
WHERE u.admin = 1
GROUP BY u.id, u.name, u.admin