【问题标题】:Sending multiple info to SQL向 SQL 发送多个信息
【发布时间】:2021-03-24 06:42:48
【问题描述】:

对不起,题主是废话,我想问的是:
在 C# 中:
所以我有一个包含整数(id)的列表,
我有一个查询字符串:

myList //the list that has id’s in it.
string QueryString = “SELECT * FROM dbo.UserInfo WHERE id!= @idList”;

我尝试做的是将 myList 中的每个项目分配给 SqlCommand 参数:

SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand(QueryString,con)
cmd.Parameters.AddWithValue(“@idList”,myList)

简而言之,我想从dbo.UserInfo 中选择所有,其中 id 不等于 myList 中的任何项目。
有没有办法做到这一点,还是我必须为每个项目运行查询?

【问题讨论】:

  • 请注意标记!您使用的是 ms sql server,而不是 mysql!
  • 相关 - 不要使用addwithvalue
  • 别再把你的代码塞在一起了。可读的代码不太可能被误解,是一个养成的好习惯。

标签: c# asp.net sql-server sqlcommand


【解决方案1】:

基本上,您需要left joinnot exists。如果@idlist 是一个逗号分隔值的字符串,那么一种方法是:

select i.value as missing_id
from string_split(@idlist, ',') i left join
     dbo.UserInfo ui
     on ui.id = i.value
where ui.id is null;

请注意,string_split() 自 SQL Server 2016 以来一直可用。在早期版本的 SQL Server 中还有其他(有些更麻烦的方法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2018-06-23
    相关资源
    最近更新 更多