Да, производна таблица ще свърши работа. Вътрешният блок за избор по-долу е производна таблица. И всяка производна таблица се нуждае от име. В моя случай, 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, защото всичките ви примерни данни щяха да се върнат и исках да ви покажа, че ще работи.