Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Nilai dinamis MySQL sebagai alias

Mengapa Anda menggunakan gabungan kiri alih-alih gabungan dalam? Juga, jika Anda melakukan kueri dinamis. Anda harus mempertimbangkan untuk menggunakan Prosedur Tersimpan. Anda bisa me-mount pernyataan SQL dalam sebuah variabel dan kemudian mengeksekusi. Berikut ini contoh singkatnya:

CREATE DEFINER=`YourDBUSER`@`localhost` PROCEDURE `rtYourProcedureName`(IN variable1 int,variable2d varchar(100), sortBy varchar(50), startRow int, ThisSQL varchar(5000), OUT totalRows int)
BEGIN
###start: MySQL is dumb and do not allow default parameter values, set here:
SET @variable1 = IFNULL(variable1 ,'0');
SET @variable2 = IFNULL(variable2 ,'');
SET @sortBy = IFNULL(sortBy ,'');
SET @startRow = IFNULL(startRow ,1);
###end: MySQL is dumb and do not allow default parameter values

set @htwsql = ThisSQL;

set @htwsql = ' SELECT SQL_CALC_FOUND_ROWS STRAIGHT_JOIN t1.field1 ,t2.field2 ';

if @variable1 = 0 then
	set @htwsql := concat(@htwsql, ' from table1 t1');
else 
	set @htwsql := concat(@htwsql,' from table2 t2 w INNER JOIN table1 t1 ');
end if;

set @htwsql := concat(@htwsql, ' where 1 = 1 ');


### sort order
if rtrim(ltrim(@sortBy)) <> '' then
	set @htwsql := concat(@htwsql,char(13), ' ORDER BY ' , cast(@sortBy as char(50)));
end if;

### limit records for pagination
set @htwsql := concat(@htwsql,char(13), ' LIMIT ', StartRow-1 ,',',24);

### just to debug the generated SQL
insert into rtlogtmp (log) select concat ('rtYourProcedureName SQL = ',@htwsql);


PREPARE stmt1 FROM @htwsql; 

EXECUTE stmt1; 

DEALLOCATE PREPARE stmt1;

SELECT FOUND_ROWS() into totalRows;

END

p.s.:Hati-hati dengan nama yang Anda gunakan sebagai alias. Mereka mungkin dicadangkan sintaks SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan praktik terbaik untuk MySQL:pesan berdasarkan id atau tanggal?

  2. MYSQL - datetime ke detik

  3. Cara terbaik untuk menyimpan pengaturan pengguna di MySQL?

  4. Memperbarui Database SQL Dengan Nilai Kotak Centang

  5. Cara menerapkan keunikan di beberapa tabel