sql >> Databáze >  >> RDS >> Mysql

Jak porovnat proměnnou uživatelské sady v MySQL?

Ano, odvozená tabulka bude stačit. Vnitřní výběrový blok níže je odvozená tabulka. A každá odvozená tabulka potřebuje jméno. V mém případě xDerived .

Strategií je nechat odvozenou tabulku očistit použití názvu sloupce. Z odvozeného bloku vychází čistý sloupec s názvem num kterou lze volně použít pro vnější výběr.

Schéma

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

Dotaz

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

Výsledky

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

Všimněte si, vaše @num koncept byl chybný, ale doufejme, že jsem výše pochopil, co jste chtěli udělat.

Také jsem použil 7, nikoli 3, protože by se vrátila všechna vaše ukázková data, a chtěl jsem vám ukázat, že to bude fungovat.



  1. MySQL vs Microsoft SQL

  2. Používání Oracle EXPAND_SQL_TEXT

  3. Yii2:Kartik Gridview součet sloupce v zápatí

  4. Android ListView:jak se vyhnout databázovému dotazu v bindView()? Potřebujete načíst jeden až mnoho dat o vztahu