Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

उपनाम के रूप में मैसकल गतिशील मूल्य

आप इनर जॉइन के बजाय लेफ्ट जॉइन का उपयोग क्यों कर रहे हैं? इसके अलावा, यदि आप गतिशील प्रश्न कर रहे हैं। आपको संग्रहीत प्रक्रियाओं का उपयोग करने पर विचार करना चाहिए। आप SQL कथन को एक चर में माउंट कर सकते हैं और फिर निष्पादित कर सकते हैं। यहां एक त्वरित उदाहरण दिया गया है:

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

अनुलेख:उन नामों से सावधान रहें जिनका आप उपनाम के रूप में उपयोग करते हैं। वे 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. गैर-अंग्रेजी वर्णों को कैसे स्टोर करें?

  2. एक javax.persistence.Column को एक अहस्ताक्षरित TINYINT के रूप में कैसे परिभाषित किया जा सकता है?

  3. XML में मिलते-जुलते टैग कैसे जोड़ें?

  4. मैं एक MySQL तिथि में महीना और वर्ष कैसे निकालूं और उनकी तुलना कैसे करूं?

  5. आदेश सूची/जबकि लूप PHP मुद्दा