sql比较列

时间:2015-08-26 06:35:33

标签: sql oracle

我知道如何找到表中重复的单个值,但现在我需要找到不同id的整列重复项。

关系:   enter image description here

对于每个IDNBD,我在表POMIAR中有很多值,如GLEBOKOSC,TEMPERATURA。我想找到不同IDNBD重复的列(GLEBOKOSC或TEMPERATURA OR等)。查询结果只需要IDNBD。

我要比较的内容:enter image description here(整栏glebokosc或者温度或zasolenie)

我有这样的查询:

SELECT idnbd
FROM pomiar 
GROUP BY idnbd, glebokosc, temperatura HAVING Count(*)>1

但它只在表pomiar与相同的idnbd

进行比较

2 个答案:

答案 0 :(得分:0)

SELECT idnbd
FROM pomiar P
WHERE  glebokosc || temperatura IN

(

SELECT glebokosc || temperatura
FROM pomiar
GROUP BY glebokosc || temperatura
HAVING Count(glebokosc || temperatura)>1)

)

答案 1 :(得分:0)

我认为这就是你要做的事情:

SELECT idnbd
FROM pomiar
WHERE glebokosc IN (
    SELECT glebokosc FROM pomiar GROUP BY glebokosc HAVING Count(*)>1
)
OR temperatura IN (
    SELECT temperatura FROM pomiar GROUP BY temperatura HAVING Count(*)>1
)
-- OR etc...

子查询在每列中查找重复值。然后,主查询返回具有任何重复值的行;使用OR子句中的WHERE单独考虑每列。