mysql 動態sql實現

2021-09-25 09:39:46 字數 1162 閱讀 4614

需求為 :

表中有x列(500列),所有的資料都為0(false)和1(true). 要求統計出其中有x(200)個true的總行數(資料庫層面實現)

說明 :

不建議用這種,主要是為了記錄動態sql和處理思路.

表結構 :

create table `test2` (

`id` tinyint(4) default 0,

`id1` tinyint(4) default 0,

`id2` tinyint(4) default 0,

`id3` tinyint(4) default 0,

`id4` tinyint(4) default 0,

`id5` tinyint(4) default 0

) engine=innodb default charset=utf8mb4;

儲存過程 :

begin

-- 定義動態sql

declare exec_sql text;

-- 查詢所有列(可加where條件進行排除某些列)

select @cols := group_concat(column_name separator "+") as '列欄位' from information_schema.columns where table_schema = 'test2' and table_name = 'test2';

-- 拼接待執行的動態sql

set exec_sql = concat('select count(1) as ','true為',size,'的行數',' from test2 where ',@cols,'=',size);

-- 準備執行動態sql

set @ms = exec_sql;

prepare stmt from @ms;

-- 執行動態sql

execute stmt;

end

執行 :

mysql動態sql無效 mysql 動態sql

解析類 xmllanguagedriver 可以通過setting 中的配置解析類。xmlscriptbuilder 動態sql 語句 bind bindhandler and 通過ognl 計算值,賦值給變數 foreachhandler forecah 標籤的解析解析 select from b...

mysql動態sql語句

直接執行sql宣告 sqlstatement 例程 string mysql mysql create table employee emp id integer not null,dept id integer not null,emp fname char 10 not null,emp lna...

MYSQL 動態sql語句

直接執行sql宣告 sqlstatement 例程 stringmysql mysql create table employee emp id integer not null,dept id integer not null,emp fname char 10 not null,emp lnam...