Я довольно новичок в программировании на T-SQL и столкнулся с проблемой, которую мне еще предстоит найти и ответить.Я надеялся, что эксперты здесь и скажут мне, где я ошибся.
Я пытаюсь сравнить 2 столбца серийных номеров с оператором not in, и он отлично работает, если в столбцах есть только цифры, но еслив серийном номере есть буква, которая просто возвращает все записи, а не только записи, которых нет во второй таблице.Ниже мой вопрос, я надеюсь, что кто-то может указать, что я сделал неправильно.Заранее спасибо.
@Transaction varchar (50)
AS
SET NOCOUNT ON;
SELECT transaction, equiptype, serialnum
FROM table1
WHERE ( serialnum NOT IN
(SELECT serial_num
FROM table2 ) AND transaction = @Transaction)
PS - это номер моей транзакции. Я фильтрую запись по
table1-
[transaction] [equiptype] [serialnum]
12345678 12 56742
12345678 11 87529
12345678 8 46259
87654321 8 the143
87654321 10 the527
87654321 11 u3765
table2-
[transdate] [transaction] [user] [equiptype] [serial_num] [status]
7/28/11 12345678 test 12 56742 NewStock
7/28/11 12345678 test 11 87529 NewStock
7/28/11 87654321 test 11 u3765 NewStock
7/28/11 87654321 test 10 the527 NewStock
Исходя из этой транзакции данных, 12345678 будет возвращать только последнюю запись с serialnum 46259, и это прекрасно работает, но если я попытаюсь сделать то же самое с транзакцией 87654321, она вернет все записи, как если бы не выполнено выполнение инструкции NOT IN вместосерийный номер the143.