長時間用戶,第一次發佈海報。MySQL在Join語句中創建動態表名稱
我有2個表;
a1_watchlists {ID(PK),姓名,日期}
a1_watchlist {ID(PK),watchlists_id(FK(a1_watchlists.id)),COMPANY_NAME,asx_code,日期}
我也有2000其他表已創建名稱爲'asx _'+ [asx_code](其中asx_code從另一個表中拉出)
此表看起來像; asx_ [asx_code] {日期(PK),開盤價,最高價,最低價,收盤價,成交量}
我想選擇所有從a1_watchlists和a1_watchlist,然後使用值選擇從asx_ [asx_code表的最後日期從a1_watchlist.asx_code生成表格名稱的[asx_code]部分。
我遇到的問題是我希望使用a1_watchlist.asx_code中的值作爲將字符串'asx_'添加到此表中的表名。
最近我已經能夠得到是;
DECLARE @TableName VARCHAR(100)
SELECT *
FROM a1_watchlist AS wl
JOIN a1_watchlists AS wls
ON wls.id = wl.watchlists_id
SET @TableName = 'asx_' + wl.asx_code
INNER JOIN (SELECT MAX(date),open,high,low,close,volume,amount_change,percent_change FROM @TableName)
目前這給了錯誤:
1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「聲明@tablename VARCHAR(100)
SELECT *
FROM a1_watchlist AS wl
' at line 1
預期colums我需要在最終的結果將是:
WL。 ID,wl.watchlists_id,wl.company_name,wl.asx_code,asx_ [asx_code] .date,asx_ [asx_code]。開,asx_ [asx_code]。高,asx_ [asx_code]。低,asx_ [asx_code] .close,asx_ [asx_code] .volume
如果您需要更多信息,請告知我。
乾杯的響應Voidmain,看起來你明白正是我試圖實現一個表名的CONCAT其中名字的一部分來自的領域現有的表格。 我不完全確定我正在做的是對MySQL很新的正確方法。如果不是有2000個表格,而是將它們放到1個表格中,那麼我將在1個表格中製作大約700萬行,每天將增加2000行,而不是像單張表格那樣增加3500個,就像我現在每天增長1行一樣。 我會嘗試你今晚提供的東西 – CassOwary 2015-02-18 04:12:57