考虑一个表A.表A有一个名为 INNETTEDTXNID 的列,它不是主键,既不是唯一的也可以是null。
我根据某些条件在表A上有一个select *(与列INNETTEDTXNID无关)。
对于上面提取的每一行,我必须找到一个名为 isNetted 的值。 isNetted 的概念是,如果此行的 INNETTEDTXNID 列在整个表格(包括此行)中出现多次,则的值为
我希望我的问题很明确。感谢您的帮助。
答案 0 :(得分:1)
可能没有 - 效率最高的地方,但它有效。
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
答案 1 :(得分: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'
如果它返回一个,那么它的唯一性,对于多个它不唯一。如果你想要它返回真或假的东西你可以使用
SELECT
CASE WHEN (
SELECT COUNT(INNETTEDTXNID)
FROM TableA
WHERE INNETTEDTXNID='value'
)>1 THEN 'True'
ELSE 'False'
END
AS isNetted