Sql 将参数动态添加到';在';查询中的子句?
我正试图用Sql 将参数动态添加到';在';查询中的子句?,sql,ms-access,Sql,Ms Access,我正试图用C# 静态查询是- Select FieldID , CDGroups.CDGroupID , Priority from Fields , CDGroups where Fields.CDGroupID = CDGroups.CDGroupID and Fields.FieldID in ('f1','f2','f3') order by Priority 我需要更换f1,f2。。包含所有这些字段的fieldIdList(List fieldIdList)中的FieldID 我
C#
静态查询是-
Select FieldID , CDGroups.CDGroupID , Priority
from Fields , CDGroups
where Fields.CDGroupID = CDGroups.CDGroupID
and Fields.FieldID in ('f1','f2','f3')
order by Priority
我需要更换f1,f2。。包含所有这些字段的fieldIdList(List fieldIdList)
中的FieldID
我该怎么做呢
var listId= string.Join(",", fieldIdList.Select(m => string.Format("'{0}'", m)));;
然后
正确的方法是使用SQL参数。
为此,您需要在列表中循环,并为每个列表项创建一个参数-在SQL字符串和查询的SQL参数列表中 看一看类似问题的答案:
我使用了以下代码:
StringBuilder sb = new StringBuilder();
foreach (string fieldId in fieldIdList)
{
sb.Append("'" + fieldId + "',");
}
string fieldList = sb.ToString().TrimEnd(',');
string queryString =
"Select FieldID , CDGroups.CDGroupID , Priority from Fields , CDGroups where Fields.CDGroupID = CDGroups.CDGroupID and Fields.FieldID in (" + fieldList + ") order by Priority";
请尝试此查询-
SELECT CDGroupID FROM fields
WHERE FieldID IN ('f1', 'f2', 'f3')
GROUP BY CDGroupID
HAVING(COUNT(DISTINCT FieldID)) >= 3
它将显示至少具有“f1”、“f2”和“f3”的CDGroupID列表。如果您想显示只有“f1”、“f2”和“f3”的文件,请将WHERE条件更改为“HAVING(COUNT(DISTINCT FieldID))>=3”。您使用的是什么语言,实体框架还是其他语言,您使用的是LINQ?我正在将c应用程序与access数据库连接,不,我没有使用LINQ。您仍然需要显示一些代码,否则,你在这里最好的希望就是“好吧,那就去做”你想得到什么?具有“f1”、“f2”和“f3”的CDGroupID列表?@Devart具有相应字段的CDGroupID列表
SELECT CDGroupID FROM fields
WHERE FieldID IN ('f1', 'f2', 'f3')
GROUP BY CDGroupID
HAVING(COUNT(DISTINCT FieldID)) >= 3