Here Tôi đã đặt câu hỏi về truy vấn không hoạt động.giá trị> = tất cả (chọn v2 ...) tạo ra các kết quả khác nhau từ giá trị = (chọn tối đa (v2) ...)
Vô tình (với sự giúp đỡ của một câu trả lời) Tôi đã tìm ra cách làm cho giải pháp đúng. Vấn đề là tôi không hiểu tại sao họ tạo ra các kết quả khác nhau.
Vì vậy, các cơ sở dữ liệu có schema này:
Và tôi đang tìm kiếm cho tất cả các mô hình từ PC
, Printer
và Laptop
với giá cao nhất . Tất cả các bảng này có thể có cột không độc đáo model
, vì các mục có khác nhau code
có thể có cùng một kiểu.
giải pháp ban đầu của tôi là:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price >= all(select price from model_price)
Nó đã cho kết quả sai - hệ thống trở * Wrong number of records (less by 2)
.
Các giải pháp khắc phục mà làm việc là thế này:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price = (select max(price) from model_price)
Vì vậy, tại sao các giải pháp với all
sản xuất kết quả khác nhau?
Về cơ sql: Now we use Microsoft SQL Server 2012 on the rating stages, and MySQL 5.5.11, PostgreSQL 9.0, and Oracle Database 11g on the learn stage in addition.
Vì vậy, tôi không biết động cơ họ chính xác sử dụng để lừa bài tập này.
Bất kỳ 'NULL' nào trong dữ liệu? 'select 1 where 1> = ALL (chọn null union select 0)' trả về không có hàng nào. –
Xin lỗi, tôi không biết dữ liệu cho cơ sở dữ liệu thứ hai (điều này được thực hiện cố ý cho những người làm bài tập không ăn gian). Tôi thậm chí không thể thấy kết quả cho các truy vấn trên DB thứ hai, chỉ tóm tắt những gì là sai, ví dụ: '* Số lượng bản ghi sai (ít hơn 2)'. – ovgolovin