簡體   English   中英

從mysql中的另一個表中選擇表並按值替換列字段

[英]select table and replace column fields by value from another table in mysql

我過去 3 年一直在使用 ms SQL,我是 MySQL 的新手,最近我們有一些 MySQL 要求來選擇一個表並按另一個表中的值替換列字段。 我已將工作 ms SQL 查詢轉換為 MySQL。 執行 MySQL 查詢時出現異常。 附表說明。在此處輸入圖像說明請就此提出建議。

以下是我嘗試過的查詢

SET  @v_Type := 'Account'; // where condition type =account

SET  @select := 'SELECT';

SET  @columns:= (  SELECT  CONCAT('CONVERT(' , `ColDataType` , ', Col' , CONVERT(VARCHAR, `ColNum`) , ') AS [' , `ColName` , '],') FROM    `Names`  WHERE   `TYPE` = @v_Type FOR XML PATH('') )

SET @where:='FROM `Data` WHERE [Type] = ''' + @v_Type + '''' 

SET @statement = CONCAT(@select,@columns,@where);

PREPARE myStatement FROM @statement;
EXECUTE myStatement;

在執行時我得到了這樣的錯誤

查詢: set @columns:= ( SELECT CONCAT('CONVERT(' , ColDataType , ', Col' , CONVERT(VARCHAR, ColNum ) , ') AS [' , ColName , '],') ...

錯誤代碼:1064 您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以獲取在第 2 行的 'VARCHAR, ColNum ) , ') AS [' , ColName , '],') FROM `Name' 附近使用的正確語法

提前致謝。

SELECT CONCAT( 'SELECT ', GROUP_CONCAT(CONCAT('col', colnum, ' ', colname)),
               ' FROM data',
               ' WHERE type = ?')
INTO @sql
FROM names
WHERE type = @v_type
GROUP BY type;
PREPARE myStatement FROM @sql;
EXECUTE myStatement USING @v_type;
DROP PREPARE myStatement;

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM