Вставить в таблицу базы данных, только если DISTINCT

1

У меня есть список, содержащий значения, которые нужно добавить в таблицу, и для которых я закодировал все необходимые требования, но мне нужно, чтобы значения добавлялись ТОЛЬКО, если они уже не существуют в таблице.

Вступительное выражение:

public static void InjectNewWords(List<string> newWords)
    {
        string conString = "Data Source=.;Initial Catalog=QABase;Integrated Security=True";

        List<string> distinctWords = newWords.Distinct().ToList();

        using (SqlConnection connection = new SqlConnection(conString))
        {
            connection.Open();
            string sqlIns = "insert into NewWords(WordList) values (@WordList)";
            SqlCommand command = new SqlCommand(sqlIns, connection);


            command.Parameters.Add("@WordList", SqlDbType.Text);
            try
            {
                foreach (string word in distinctWords)
                {
                    command.Parameters["@WordList"].Value = word;
                    command.ExecuteNonQuery();
                }
            }
            catch(Exception ee)
                {
                    Console.WriteLine(ee.ToString());
                }


            try
            {

                Int32 rowsAffected = command.ExecuteNonQuery();
                //Console.WriteLine("RowsAffected: {0}", rowsAffected);
                //("Rows Affected: " + rowsAffected);
                connection.Close();
                newWords.Clear();
                distinctWords.Clear();
            }

Какие изменения я должен внести, чтобы это сделать, ребята? :) Благодарю!

Теги:
select
insert
distinct

2 ответа

1

возможно, просто добавьте where к insert? (и уникальный индекс для хорошей оценки и эффективности оценки):

 where not exists (select 1 from NewWords where WordList = @WordList)
0

если вы сохранили список имен в другой таблице, вы можете использовать этот запрос

insert into tbl_name 
select * from tbl_name 
where col_name not in(
    select * from ano_tbl_name
);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню