![](/img/trans.png)
[英]SQL Server 2008 : Update query is not working and there is no ERROR
[英]NOT IN query not working, SQL Server 2008
查詢的第一部分在not in
運行之前給出了100條記錄的列表。 運行第二個查詢,並提供75條記錄的列表。 我嘗試使用not in
編寫的查詢是獲取一個結果集中的記錄,而不是另一個。 我得到的incorrect syntax near the word not
錯誤。
SELECT distinct Patient.patientid
FROM Patient INNER JOIN
patientICD ON Patient.patientid = patientICD.patientid AND Patient.admissiondate = patientICD.admissiondate AND
Patient.dischargedate = patientICD.dischargedate INNER JOIN
tblICD ON patientICD.primarycode = tblICD.ICD_ID
WHERE (tblICD.descrip LIKE N'%diabetes%') and not in
(
SELECT distinct Patient.patientid
FROM Patient INNER JOIN
patientICD ON Patient.patientid = patientICD.patientid AND Patient.admissiondate = patientICD.admissiondate AND
Patient.dischargedate = patientICD.dischargedate INNER JOIN
tblICD ON patientICD.primarycode = tblICD.ICD_ID
WHERE (tblICD.icd_id LIKE N'25000')
)
是否曾經允許使用expression AND NOT IN (select query
?
您需要指定第二個查詢中沒有的字段
and Patient.patientid not in
你是說寫這個嗎
WHERE (tblICD.descrip LIKE N'%diabetes%') and Patient.patientid not in
更新
這樣可以重寫整個東西嗎?
SELECT distinct Patient.patientid
FROM Patient INNER JOIN
patientICD ON Patient.patientid = patientICD.patientid AND Patient.admissiondate = patientICD.admissiondate AND
Patient.dischargedate = patientICD.dischargedate INNER JOIN
tblICD ON patientICD.primarycode = tblICD.ICD_ID
WHERE tblICD.descrip LIKE N'%diabetes%' AND tblICD.icd_id NOT LIKE N'25000'
您在沒有之前忘記了一個字段。
我相信您需要指定not in
其中的列。 因此,根據您的腳本,我想您需要and Patient.patientid not in
純粹是風格上的:您可以“擠出”耐心ICD * tblICD產品,並將其放入CTE中,並對其進行兩次引用,例如:(未經測試)
WITH zzz AS (
SELECT pic.patientid , pic.admissiondate , pic.dischargedate
, tab.ICD_ID , tab.descrip
FROM patientICD pic
JOIN tblICD tab ON pic.primarycode = tab.ICD_ID
)
SELECT DISTINCT p.patientid
FROM Patient p
JOIN zzz one ON one.patientid = p.patientid
AND one.admissiondate = p.admissiondate
AND one.dischargedate = p.dischargedate
WHERE one.descrip LIKE N'%diabetes%'
AND p.patientid NOT IN (
SELECT two.patientid
FROM zzz two
WHERE two.admissiondate = p.admissiondate
AND two.dischargedate = p.dischargedate
AND two.icd_id LIKE N'25000'
);
注意:我不喜歡LIKE N'25000'
。 我認為完全匹配會很好。 icd_id字段應該是數字。 {admissiondate,dischargedate}對也應建模。 可能是通過使用diagnostic_id或identity_id。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.