Tôi đã tạo hai bảng, T1 và T2 với một cột mỗi, abc và xyz tương ứng. Tôi đã chèn 2 hàng (giá trị số 1 và 2) vào mỗi bảng.Xóa câu lệnh - Truy vấn phụ sẽ phát hiện lỗi
Khi tôi chạy lệnh "select abc from t2"
, nó ném một lỗi nói rằng cột abc không tồn tại trong bảng T2. Tuy nhiên, khi tôi chạy lệnh "delete from t1 where abc in (SELECT abc from t2);"
, 2 hàng sẽ bị xóa.
Không nên xóa không thành công vì tôi đã sử dụng cùng một câu lệnh không thành công trong truy vấn phụ?
tạo bảng t1 (số abc); --Bảng được tạo
tạo bảng t2 (số xyz); --Bảng được tạo
chèn vào giá trị t1 (1); --Một hàng được chèn
chèn vào giá trị t1 (2); --Một hàng được chèn
chèn vào giá trị t2 (1); --Một hàng được chèn
chèn vào giá trị t2 (2); --Một hàng được chèn
SELECT abc from t2; --ORA-00904 -> Vì cột abc không tồn tại trong t2
xóa từ t1 ở vị trí abc trong (SELECT abc từ t2); --2 hàng xóa
Tôi đoán là vì 'abc' trong câu lệnh' DELETE' có nghĩa là 'abc' trong' t1' – luiges90
hãy thử chạy một truy vấn cuối cùng để xác nhận các hàng được trả về, sau đó bạn sẽ có một ý tưởng tốt hơn mà giá trị abc đã được trả lại –
Cảm ơn câu trả lời của bạn. Khi tôi sử dụng bí danh "xóa từ t1 nơi abc trong (SELECT t2.abc từ t2), nó ném một lỗi. Nhưng nó không nên ném một lỗi ngay cả khi không có điều đó như tôi đã sử dụng" chọn abc từ t2 "? – Orangecrush