如何在 sql 查询中将变量用作子句?

How can I use a variable as a clause in sql query?

我对 sql 和编程还比较陌生,所以请耐心等待。

我有一个 table,其中有类似于以下的三列:

penID   inkID   color
01      2       red
02      2       red
03      2       red
04      1       blue
05      1       blue
06      3       black
07      3       purple
08     -5       yellow

每支笔都有一个唯一的 penID,每支 inkID 都应该对应于它的正确颜色(每支 inkID=2 的笔都应该只对应于红色)但是我们有一些异常需要我追踪。 现在,假设我有数千个不是连续数字集的 inkID(我们可以有 2,6,7,8,11..

我所做的是查询以获取所有可用 InkID 的列表,而不是我想 运行 针对每个 InkID 的另一个查询以验证同一 inkID 是否有不同的颜色。

因为我有数千个,所以我不知道如何在不必手动编写一千个查询(不是机会)的情况下做到这一点。 我正在考虑使用 c# 框架将我的第一个查询的输出存储在列表中,并将第二个查询中的每个列表项作为变量传递,但我不知道这是否可能。

这是我到目前为止的第二个查询:

Select distinct Color
from TableName
where InkID = 12

(为了便于讨论,假设为 12)

有什么建议吗?还有其他方法可以使用吗?

提前致谢

如果你这样做

SELECT inkID, COUNT(DISTINCT color)
FROM TableName
GROUP BY inkID
HAVING COUNT(DISTINCT color) > 1;

这将 return 分配了一种以上颜色的所有 InkID。