MySQL動(dòng)態(tài)SQL語(yǔ)句可以拼接不同的表名,實(shí)現(xiàn)不同表之間的操作。下面介紹一個(gè)實(shí)例:
SELECT * FROM
( SELECT * FROM
( SELECT * FROM
`table1`
WHERE `id` = 1 ) AS temp1
UNION ALL
SELECT * FROM
`table2` WHERE `id` = 1 ) AS temp2
UNION ALL
SELECT * FROM
`table3` WHERE `id` = 1;
上述代碼會(huì)從三張不同的表 `table1`,`table2`,`table3` 中選擇 `id` 為 1 的數(shù)據(jù)并合并輸出。通過(guò)動(dòng)態(tài)拼接表名,我們可以根據(jù)不同的需求操作不同的表。
SET @tableName = 'table1';
SET @queryString = CONCAT('SELECT * FROM ', @tableName, ' WHERE `id` = 1;');
PREPARE stmt FROM @queryString;
EXECUTE stmt;
上述代碼會(huì)根據(jù)變量 `@tableName` 的值動(dòng)態(tài)組合查詢(xún)語(yǔ)句。通過(guò) PREPARE 和 EXECUTE 命令,可以執(zhí)行動(dòng)態(tài)拼接的 SQL 語(yǔ)句。
MySQL 動(dòng)態(tài) SQL 語(yǔ)句拼接表名是很常見(jiàn)的用法,在實(shí)際的開(kāi)發(fā)中也有廣泛的應(yīng)用。需要注意的是,在拼接表名時(shí)要避免 SQL 注入攻擊,可以使用預(yù)處理語(yǔ)句來(lái)防止惡意注入。
上一篇html快捷方式代碼