0

考虑一个表 A。表 A 有一个名为INNETTEDTXNID的列,它不是主键,也不是唯一的,可以为空。

我根据某些条件在表 A 上有一个选择 *(与列 INNETTEDTXNID 无关)。

对于上面提取的每一行,我必须找到一个名为isNetted的值。isNetted的概念是,如果该行的INNETTEDTXNID列在整个表(包括该行)中多次出现,则该行的isNetted值将为 true。

我希望我的问题很清楚。感谢您提前提供帮助。

4

2 回答 2

1

Probably no-where near the most efficient but it works.

SELECT TableA.INNETTEDTXNID, 
 CASE
 WHEN NetChk.INNETTEDTXNID IS NOT NULL Then 1
 ELSE 0
 END AS isNetted
FROM TABLEA
LEFT JOIN (
          SELECT INNETTEDTXNID 
          FROM TableA
          GROUP BY INNETTEDTXNID
          HAVING COUNT(INNETTEDTXNID) >1) 
NetChk ON TableA.INNETTEDTXNID = NetChk.INNETTEDTXNID
于 2012-04-30T12:59:03.773 回答
1

这将返回多次出现的任何条目的值。

SELECT a.INNETTEDTXNID
FROM TableA as a, TableA as b
WHERE
    not a.id=b.id
    and a.INNETTEDTXNID=b.INNETTEDTXNID

如果您尝试专门执行此操作以检查单个数字是否多次出现,您可以执行类似的操作

SELECT COUNT(INNETTEDTXNID)
FROM TableA
WHERE INNETTEDTXNID='value'

如果它返回一个,那么它是唯一的,对于不止一个它不是唯一的。如果您希望它返回类似 true 或 false 的内容,您可以使用

SELECT 
    CASE WHEN (
        SELECT COUNT(INNETTEDTXNID)
        FROM TableA
        WHERE INNETTEDTXNID='value'
    )>1 THEN 'True'
    ELSE 'False'
    END
    AS isNetted
于 2012-04-30T13:58:13.620 回答