0

这是我拥有的数据,我想显示所有包含资产 > 10 的名称,但仍显示所有 < 10 的资产。

id   name          assets
1   'Mira'           10
2   'Mira'           9
3   'Maulana'        10
4   'Maulana'        5
5   'Fifi'           4
6   'Fifi'           6

目标

id   name          assets
1   'Mira'           10
2   'Mira'           9
3   'Maulana'        10
4   'Maulana'        5
4

2 回答 2

2

使用存在

   select t1.* from table t1
    where exists ( select 1 from table t2 where t1.name=t2.name and t2.assets>10)

注意:在我看来你需要> = 10,但你的描述不是这样,所以我使用了> 10

于 2020-02-11T07:21:58.263 回答
1

一种方法使用一个EXISTS子句来检查每个名称是否存在资产 > 10 的记录:

SELECT id, name, assets
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.name = t1.name AND t2.assets > 10);

另一种选择是使用聚合:

SELECT t1.id, t1.name, t1.assets
FROM yourTable t1
INNER JOIN
(
    SELECT name
    FROM yourTable
    GROUP BY name
    HAVING SUM(assets > 10) > 0
) t2
    ON t1.name = t2.name;
于 2020-02-11T07:22:14.420 回答