Cơ sở dữ liệu: Sybase Advantage 11Làm thế nào để viết câu lệnh SQL DELETE với câu lệnh SELECT trong mệnh đề WHERE?
Ngày quest của tôi để chuẩn hóa dữ liệu, tôi đang cố gắng để xóa các kết quả tôi nhận được từ tuyên bố SELECT
này:
SELECT tableA.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;
Đây là tuyên bố DELETE
tôi đã đưa ra:
DELETE FROM tableA
WHERE (SELECT q.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date'))
;
tôi liên tục nhận được lỗi này khi tôi cố gắng chạy tuyên bố này:
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = S0000; NativeError = 2124;
[iAnywhere Solutions][Advantage SQL Engine]Invalid operand for operator: = Boolean value
cannot be operated with non-Boolean value.
Tôi cũng đã cố gắng tuyên bố này:
DELETE FROM tableA
INNER JOIN tableB u on (u.qlabel = tableA.entityrole AND u.fieldnum = tableA.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR tableA.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;
mà kết quả trong:
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117;
[iAnywhere Solutions][Advantage SQL Engine] Unexpected token: INNER -- Expecting semicolon.
-- Location of error in the SQL statement is: 23 (line: 2 column: 1)
Có thể ai đó giúp tôi trong việc xây dựng đúng một truy vấn DELETE mà sẽ cho kết quả trong các dữ liệu thích hợp đang được gỡ bỏ?
kịch bản Trường hợp xấu nhất - bạn có thể tạo ra một bảng tạm thời, CHỌN vào đó bảng tạm thời, làm xóa của bạn tham gia vào bảng tạm thời, sau đó droping bảng tạm thời? –