Có, một bảng dẫn xuất sẽ làm được. Khối chọn bên trong bên dưới là một bảng dẫn xuất. Và mọi bảng dẫn xuất cần một tên. Trong trường hợp của tôi, xDerived
.
Chiến lược là để cho bảng dẫn xuất xóa việc sử dụng tên cột. Ra khỏi đoạn dẫn xuất là một cột sạch có tên num
mà lựa chọn bên ngoài được sử dụng miễn phí.
Lược đồ
create table employee
( id int auto_increment primary key,
experience varchar(20) not null
);
-- truncate table employee;
insert employee(experience) values
('4-5'),('7-1'),('4-1'),('6-5'),('8-6'),('5-9'),('10-4');
Truy vấn
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Kết quả
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Lưu ý, @num
của bạn khái niệm bị lỗi nhưng hy vọng tôi đã hiểu ý bạn muốn làm ở trên.
Ngoài ra, tôi đã chọn 7 chứ không phải 3 vì tất cả dữ liệu mẫu của bạn sẽ trả về và tôi muốn cho bạn thấy nó sẽ hoạt động.