Ja, eine abgeleitete Tabelle reicht aus. Der innere Auswahlblock unten ist eine abgeleitete Tabelle. Und jede abgeleitete Tabelle braucht einen Namen. In meinem Fall xDerived
.
Die Strategie besteht darin, die abgeleitete Tabelle die Verwendung des Spaltennamens bereinigen zu lassen. Aus dem abgeleiteten Chunk kommt eine saubere Spalte mit dem Namen num
die die äußere Auswahl frei verwenden kann.
Schema
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');
Abfrage
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Ergebnisse
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Beachten Sie, Ihr @num
Das Konzept war fehlerhaft, aber hoffentlich habe ich interpretiert, was Sie oben tun wollten.
Außerdem habe ich mich für 7 und nicht für 3 entschieden, weil alle Ihre Beispieldaten zurückgegeben worden wären, und ich wollte Ihnen zeigen, dass es funktioniert.