长时间用户,第一次发布海报。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