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

SET proměnná v příkazu SELECT - MySQL

Problém je v tom, že nemůžete kombinovat select a set v jednom příkazu bude jistě chyba syntaxe:

select*from t where 1 and [email protected]=1;

Pokud chcete provést set v rámci select , použijte dvojtečku rovná se syntax. Změňte toto:

select*from t where 1 and [email protected]=1;

do:

select*,@a:=1 from t where 1;

Zde je návod, jak aktualizovat proměnnou při každém řádek:

create table t(id int); insert t values(1),(2),(3);
[email protected]=0;
[email protected]:=id from t;

A můžete dokonce provést concat :

[email protected]='0';
select @a:=concat(@a,',',id)from t;

Nebo concat bez úvodního 0 :

[email protected]='';
select @a:=concat(@a,if(@a='','',','),id)from t;

Nicméně manuál výslovně uvádí, že je to nebezpečné:

To bylo také zmíněno na Xaprb .

A konečně, pokud děláte zvláštní věci jako přiřazení různých typů hodnot k proměnné atd., pokladna manuál abyste si byli jisti, že rozumíte složitým mechanismům.



  1. Regulární výraz v klauzuli LIKE PostgreSQL

  2. Přehled nástrojů pro plánování úloh pro PostgreSQL

  3. MYSQL importuje data z csv pomocí LOAD DATA INFILE

  4. Aktualizace z MYSQL na MYSQLI