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 example@sqldat.com=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 example@sqldat.com=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);
example@sqldat.com=0;
example@sqldat.com:=id from t;

Możesz nawet wykonać concat :

example@sqldat.com='0';
select @a:=concat(@a,',',id)from t;

Lub concat bez wiodącego 0 :

example@sqldat.com='';
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