仅选择具有唯一字段的行

时间:2010-10-02 20:23:13

标签: sql

什么是SQL命令,用于检查行中没有重复字段的行。

例如:

A A A B B B不应出现在结果表格中。

仅限A B C D E F

等行

即。给出如下数据:

A A A B B B

A B C D E F

A A B G H Q

应该返回A B C D E F

5 个答案:

答案 0 :(得分:3)

没有简单的命令可以做到这一点。

似乎是一个不寻常的要求,如果所有列都可以互换,则可能表明该表不是第一范式。

以下适用于Microsoft SQL Server

;With YourData AS
(
select 'A' as C1, 'A' as C2, 'A' as C3, 'B' as C4,  'B' as C5,  'B' as C6 UNION ALL
select 'A' as C1, 'B' as C2, 'C' as C3, 'D' as C4,  'E' as C5,  'F' as C6
)
SELECT *
FROM   YourData
WHERE  1 =
       ( SELECT  TOP 1 COUNT(*) AS Cnt
       FROM     ( 
                SELECT C1 AS     C
                UNION ALL
                SELECT C2
                UNION ALL
                SELECT C3
                UNION ALL
                SELECT C4
                UNION ALL
                SELECT C5
                UNION ALL
                SELECT C6
                ) D
       GROUP BY C
       ORDER BY Cnt DESC
       )

答案 1 :(得分:2)

Select distinc *返回唯一的ROWS,而不是字段中的唯一值。  您应该将每列的值与其他列进行比较。 (假设列类型相同)。例如,对于4列表,您应该像以下一样进行smoething:

  SELECT Col1, Col2, Col3, Col4 FROM MyTable WHERE
  Col1 NOT IN (Col2,Col3,Col4) AND
  Col2 NOT IN (Col3,Col4) AND
  Col3 <> Col4

答案 2 :(得分:0)

SELECT DISTINCT * FROM tablename

答案 3 :(得分:0)

SELECT DISTINCT col FROM tabl

答案 4 :(得分:-1)

  

SELECT * FROM   mytable

     

WHERE mytable.col1!= mytable.col2!= mytable.col3 ...