Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сравним променлива на потребителски набор в MySQL?

Да, производна таблица ще свърши работа. Вътрешният блок за избор по-долу е производна таблица. И всяка производна таблица се нуждае от име. В моя случай, xDerived .

Стратегията е да позволите на извлечената таблица да изчисти използването на името на колоната. Излизащата от извлечената част е чиста колона с име num които външният избор е свободен за използване.

Схема

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');

Заявка

select id,experience,num 
from 
(   SELECT id,experience, 
    CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num  
    FROM employee  
) xDerived 
where num>=7;

Резултати

+----+------------+------+
| id | experience | num  |
+----+------------+------+
|  2 | 7-1        |    7 |
|  5 | 8-6        |    8 |
|  7 | 10-4       |   10 |
+----+------------+------+

Обърнете внимание, че вашият @num концепцията беше погрешна, но се надявам, че разтълкувах какво искахте да направите по-горе.

Освен това избрах 7, а не 3, защото всичките ви примерни данни щяха да се върнат и исках да ви покажа, че ще работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql получава имената на колоните на таблицата по азбучен ред

  2. Избягването на единични кавички в PHP/MySQL вмъкване не работи

  3. Използвайте корелирана подзаявка върху множество колони

  4. Правилен начин за писане на изявления за актуализиране на PDO

  5. Пускане на уникален ключ в много колони, без да пускате външен ключ?