Lý do là vì khi một cột không phân biệt không tồn tại trong truy vấn con nhưng lại tồn tại trong truy vấn bên ngoài, Oracle giả định rằng bạn đang tham chiếu đến cột từ truy vấn bên ngoài.
Với bí danh, truy vấn mà bạn bối rối sẽ trông giống như sau:
select *
from test_values tv
where tv.tst_id in (select tv.tst_id2
from test_lookup tl
where tl.tst_value = 'findMe');
Hy vọng rằng điều đó làm cho mọi thứ rõ ràng hơn?
Vấn đề bạn đang gặp phải là một ví dụ rất hay về lý do tại sao bạn nên luôn gắn nhãn các cột của mình với bảng mà chúng đến từ - điều này giúp việc duy trì truy vấn ngay từ đầu dễ dàng hơn nhiều!