Mysql
 sql >> база данни >  >> RDS >> Mysql

SET променлива в израза SELECT - MySQL

Проблемът е, че не можете да смесвате select и set в едно изявление със сигурност ще има синтактична грешка:

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

Ако искате да направите set в рамките на select , използвайте двоеточие е равно синтаксис. Променете това:

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

в:

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

Ето как актуализирате променливата на всяка ред:

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

И дори можете да направите concat :

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

Или concat без водещия 0 :

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

Въпреки това ръководствотоизрично заявява, че това е опасно:

Това също беше споменато на Xaprb .

И накрая, ако правите странно неща като присвояване на различни типове стойности на променливата и т.н., изплащане ръководството за да сте сигурни, че разбирате сложните механизми.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли нещо аналогично на метода split() в mySql?

  2. PHP формулярът не качва файл

  3. Визуален конструктор на заявки

  4. Защо моят cfloop спира след вмъкване на първи идентификатор?

  5. Връщане на стойност, когато няма редове в PDO