Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SET zmienną w instrukcji SELECT - MySQL

Problem polega na tym, że nie można mieszać select i set w jednym oświadczeniu na pewno będzie błąd składni:

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

Jeśli chcesz zrobić set w ramach select , użyj dwukropka równa się składnia. Zmień to:

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

na:

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

Oto jak zaktualizować zmienną po każdym wiersz:

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

Możesz nawet wykonać concat :

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

Lub concat bez wiodącego 0 :

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

Jednak instrukcja wyraźnie stwierdza, że ​​jest to niebezpieczne:

Wspomniano o tym również na Xaprb .

Na koniec, jeśli robisz dziwaczne rzeczy takie jak przypisywanie różnych typów wartości do zmiennej itp., do kasy instrukcja aby upewnić się, że rozumiesz zawiłe mechanizmy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizujesz kolumnę zamówień MySQL?

  2. MySQL INSERT INTO z podwójnym warunkiem dla JEŚLI NIE ISTNIEJE

  3. Czy istnieje sposób na dopasowanie adresu IP do adresu IP+CIDR ​​bezpośrednio z zapytania SELECT?

  4. Pobieranie ostatniej notatki (według sygnatury czasowej) w pojedynczym zapytaniu z tabeli 1:n

  5. Laravel 4:wielokrotność gdzie z lub w elokwentnym