統(tǒng)計(jì) - MYSQL版本問題導(dǎo)致SQL語法錯(cuò)誤!unknow column ’SQLSTR’
問題描述
SQLSTR是別名,在MySQL5.7以上版本能通過,在5.0上提示unknow column ‘SQLSTR’錯(cuò)誤,我不知道應(yīng)該怎么修改(因?yàn)榭蛻絷P(guān)系不能通過mysql版本),請各位大神指點(diǎn)!
BEGIN DECLARE sTYPE VARCHAR(20); DROP TEMPORARY TABLE IF EXISTS temp_public_data; CREATE TEMPORARY TABLE temp_public_data SELECT DATE_FORMAT(FROM_UNIXTIME(n.inputtime),’%Y-%m-%d’) as days, DATE_FORMAT(FROM_UNIXTIME(n.inputtime),’%Y-%m’) as months, DATE_FORMAT(FROM_UNIXTIME(n.inputtime),’%Y’) as years, DATE_FORMAT(FROM_UNIXTIME(n.inputtime),’%u’) as weeks, count(n.id) as pubnum,n.username from v9_news as n WHERE DATE_FORMAT(FROM_UNIXTIME(n.inputtime),’%Y-%m-%d’) BETWEEN pDayBegin AND pDayEnd GROUP BY days,n.username; IF pType=1 THENSET sType = 'years'; ELSEIF pType=2 THENSET sType = 'months'; ELSEIF pType=3 THENSET sType = 'weeks'; ELSEIF pType=5 THENSET sType = 'days'; END IF;SET @EE = ''; SELECT @EE:= CONCAT(@EE,’,SUM(IF(username=’’,username,’’,pubnum,0)) AS ’’,username,’’’) AS **SQLSTR** FROM (SELECT DISTINCT username FROM temp_public_data) A ORDER BY **LENGTH(SQLSTR)** DESC LIMIT 0,1; SET @SQL = CONCAT(’SELECT IFNULL(’,sType,’,’TOTAL’) AS MONTH’); SET @SQL = CONCAT(@SQL,@EE); SET @SQL = CONCAT(@SQL,’,SUM(pubnum) as TOTAl ’); SET @SQL = CONCAT(@SQL,’ FROM temp_public_data’); SET @SQL = CONCAT(@SQL,’ GROUP BY ’,sType,’ WITH ROLLUP;’);#SELECT @SQL; PREPARE stmt FROM @SQL;EXECUTE stmt; DROP TEMPORARY TABLE IF EXISTS temp_public_data;END
問題解答
回答1:可以了,用SQLSTR后面into 一個(gè)變量,然后用這個(gè)變量來order就可以了,汗!
相關(guān)文章:
1. mysql 可以從 TCP 連接但是不能從 socket 鏈接2. sql語句 - 如何在mysql中批量添加用戶?3. mysql 非主鍵做范圍查找實(shí)現(xiàn)原理的一點(diǎn)困惑4. java - jdbc如何返回自動定義的bean5. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。6. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 1107. mysql - JAVA怎么實(shí)現(xiàn)一個(gè)DAO同時(shí)實(shí)現(xiàn)查詢兩個(gè)實(shí)體類的結(jié)果集8. mysql建表索引問題求助9. mysql - PHP定時(shí)通知、按時(shí)發(fā)布怎么做?10. 事務(wù) - mysql共享鎖lock in share mode的實(shí)際使用場景
