sql >> Databasteknik >  >> RDS >> Mysql

Hur jämför man en användaruppsättningsvariabel i MySQL?

Ja, en härledd tabell duger. Det inre urvalsblocket nedan är en härledd tabell. Och varje härledd tabell behöver ett namn. I mitt fall, xDerived .

Strategin är att låta den härledda tabellen rensa användningen av kolumnnamnet. En ren kolumn med namnet num kommer ut ur den härledda biten som det yttre valet är gratis att använda.

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

Fråga

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

Resultat

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

Observera, ditt @num konceptet var felaktigt men förhoppningsvis tolkade jag vad du menade att göra ovan.

Dessutom valde jag 7 inte 3 eftersom alla dina exempeldata skulle ha returnerats, och jag ville visa dig att det skulle fungera.



  1. Hur man släpper användare från Postgres Database

  2. hur man använder variabler i ett psql-skript

  3. Hur skriver man UPPDATERA SQL med tabellalias i SQL Server 2008?

  4. Hur kan jag använda Linq med en MySql-databas på Mono?