はい、派生テーブルで十分です。以下の内側の選択ブロックは派生テーブルです。そして、すべての派生テーブルには名前が必要です。私の場合、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
に注意してください コンセプトに誤りがありましたが、うまくいけば、あなたが上でやろうとしていることを解釈しました。
また、すべてのサンプルデータが返されるため、3ではなく7を使用しました。これは、機能することを示したかったのです。