MySQL 查詢排除指定字段、自定義變量、動態執行SQL


今天在項目中,要查詢一個表。這個表中有幾十個字段。但是要把其中的一個特殊處理。

這個該怎么辦呢?查來查去,SQL 中沒有排除某一些字段的語句,只能單獨寫一些語句來處理;

基本思路:對於MySQL數據庫有 information_schema 庫中存着數據該的一些基礎信息。

1、從這個庫中的 COLUMNS (記錄各個表的所有字段)表中取出指定數據表的所有字段,再排除不需要的字段,並存在變量中。

2、拼接SQL語句,並把變量帶入(這里拼接完成后需要再賦到另一個變量)。

3、執行拼接的SQL語句。

--1、取出指定數據表的所有字段,再排除不需要的字段,並存在變量中(ztjg_gd:你要查詢的表,spatital_data:你要排除的字段)
SET
@str := ( SELECT GROUP_CONCAT( s.column_name ) FROM information_schema.`COLUMNS` s WHERE s.table_name = 'ztjg_gd' AND s.column_name <> 'spatial_data' );
--2、拼接SQL語句,並把變量帶入
SET @v_sql = concat( 'select ', @str, ',ASTEXT(zd.spatial_data) AS spatial_data from ztjg_gd zd WHERE zd.id = 3 AND zd.is_deleted = 0' ); SET @e_sql = @v_sql; --這一句必需,不然下面查詢就有問題

--3、執行拼接的SQL語句 PREPARE stmt FROM @e_sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

到這里,整個的查詢就完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM