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

时间:2017-01-09 15:18:42

标签: c# sql loops variables dynamicquery

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

我有一个表格,其中有三列类似于以下内容:

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应该对应它的正确颜色(每个墨水ID = 2的笔应该只对应红色)但是我们需要跟踪一些异常下。 现在,想象一下,我有数千个不是连续数字的墨迹(我们可能有2,6,7,8,11..

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

因为我有成千上万,所以我不知道如何做到这一点,而无需手动编写一千个查询(不是偶然)。 我正在考虑使用ac#framework将我的第一个查询的输出存储在列表中,并将第二个查询中的每个列表项作为变量传递,但我不知道这是否可能。< / p>

这是我到目前为止的第二个问题:

Select distinct Color
from TableName
where InkID = 12

(为了讨论,让我们说12)

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

提前谢谢

1 个答案:

答案 0 :(得分:1)

如果你这样做

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

这将返回分配了多种颜色的所有InkID。