我的 SQL 生锈了,所以我需要帮助,我希望我的解释不会混淆。
我需要一个语句来查找字段 A 的所有重复值,如果其中至少一个行在字段 B 上具有恒定值
字段 A | B场
狗| 犬类
| 空
狗 | 无效的
因为字段 B 是犬类,我想要所有重复字段 A 值的行。我需要一个 select 语句,但我的意图是更改字段 C 上的重复值,但我以后可能会弄清楚。
我的 SQL 生锈了,所以我需要帮助,我希望我的解释不会混淆。
我需要一个语句来查找字段 A 的所有重复值,如果其中至少一个行在字段 B 上具有恒定值
字段 A | B场
狗| 犬类
| 空
狗 | 无效的
因为字段 B 是犬类,我想要所有重复字段 A 值的行。我需要一个 select 语句,但我的意图是更改字段 C 上的重复值,但我以后可能会弄清楚。
似乎您想要所有行,其中FieldB
值不统一为 NULL。
这为您提供了FieldA
具有该特征的 s 列表:
select FieldA
from t
group by FieldA
having count(FieldB) > 0;
如果您确实想要具有NULL
值的行,则:
select FieldA, FieldB
from (select t.*, count(FieldB) over (partition by FieldA) as cnt
from t
) t
where cnt = 0;
要获取其中一个是犬科动物的所有 FieldA :
select distinct FieldA
from t
where FieldB = 'canine';
要获取所有行,请在where
子句中使用它:
select *
from t
where t.FieldA in (select distinct FieldA
from t
where FieldB = 'canine'
);
count(fielda) > 1
获取其中一个fieldb
具有值的所有行canine
select t1.fielda
from mytab t1
join (select fielda, count(*) as dups
from mytab
group by fielda) t2 on t2.fielda = t1.fielda
where t1.fieldb = 'canine'
and t2.dups > 1
如果您希望每一行都有重复项,并且字段 B 中的至少一项不为空,这将拉取:
SELECT *
FROM Table
WHERE FieldA IN (SELECT DISTINCT FieldA
FROM Table
WHERE FieldB IS NOT NULL)
AND FieldA IN (SELECT FieldA
FROM Table
GROUP BY FieldA
HAVING COUNT(*)>1)
你的帮助让我找到了它。谢谢大家。我正在寻找的是:
SELECT FieldA
FROM t
WHERE FieldB = 'Canines'
AND FieldA
IN
(
SELECT FieldA
FROM t
GROUP BY FieldA
HAVING COUNT(FieldA) > 1
)
谢谢!谢谢!