sql >> Database teknologi >  >> RDS >> Mysql

Hvordan sammenligner man en brugersætvariabel i MySQL?

Ja, en afledt tabel gør det. Den indre udvalgsblok nedenfor er en afledt tabel. Og hver afledt tabel har brug for et navn. I mit tilfælde xDerived .

Strategien er at lade den afledte tabel rense brugen af ​​kolonnenavnet. Ud af den afledte chunk kommer en ren kolonne ved navn num som det ydre udvalg er gratis at bruge.

Skema

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

Forespørgsel

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

Resultater

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

Bemærk, dit @num konceptet var defekt, men forhåbentlig tolkede jeg, hvad du mente at gøre ovenfor.

Jeg gik også med 7 ikke 3, fordi alle dine prøvedata ville være returneret, og jeg ville gerne vise dig, at det ville fungere.



  1. MySQL - Hurtigste måde at kontrollere, om data i InnoDB-tabellen er ændret

  2. Sådan beregnes procentdel af kolonne i MySQL

  3. Spring-dvale ved hjælp af flere datakilder/database

  4. Justering for standardtidszoneindstillingen på RDS