Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để so sánh một biến tập hợp người dùng trong MySQL?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi một truy vấn MSSQL CTE sang MySQL?

  2. Python / Django MySQL Xử lý ngày giờ và múi giờ

  3. sự cố với OneToMany bao gồm một mệnh đề bộ lọc trong Spring jpa

  4. MYSQL:Phương thức CHỌN - nhưng không hiển thị bản sao / GROUP hoặc DISTINCT?

  5. Mệnh đề WHERE trong câu lệnh INSERT sử dụng mysql / php