2013-12-16 32 views
3

我在NodeJS中遇到了這個查詢問題。節點中的MySQL查詢變量

SET @i = 0; 
SELECT POSITION FROM (
    SELECT name, @i:[email protected]+1 AS POSITION 
    FROM database.table ti WHERE name='Johny' ORDER BY points ASC) t WHERE name='Johny' 

查詢工作在海蒂SQL沒有問題,但是當我在節點執行它,我得到的回調是不確定的。

代碼的NodeJS:

var query = 
      "SET @i = 0;" 
     + " SELECT POSITION FROM (" 
     + "  SELECT name, @i:[email protected]+1 AS POSITION" 
     + " FROM database.table ti WHERE name='Johny' ORDER BY points ASC) t WHERE name='Johny'"; 
mySQLconnection.query(query,function(err,rows){ 
    console.log(rows); 
}); 

謝謝你在前進,

+0

你能告訴我們你在海蒂執行的查詢嗎? –

+0

SET @i = 0; ( )( SELECT name,@i:= @ i + 1 AS POSITION FROM test_database.test_table ti WHERE name ='Johny'ORDER BY points ASC)t WHERE name ='Johny' – user1972670

+0

這將返回結果集中的結果。例如:如果'Johny'在結果集中位於第二行,它將在位置列中返回'2' – user1972670

回答

0

我不得不單獨運行查詢,讓他們的工作。

例如,

var config = {user: "root", password: "root"}; // your config 
var sql1 = "SET @i = 0"; 
var sql2 = " SELECT POSITION FROM (" + 
    "SELECT name, @i:[email protected]+1 AS POSITION " + 
    "FROM database.table ti WHERE name='Johny' ORDER BY points ASC) t " + 
    "WHERE name='Johny'"; 

var result = []; 
var connection = mysql.createConnection(config); 

var query1 = connection.query(sql1); 
query1.on("error", function (err) { 
    // handle error 
}); 
query1.on("end", function() { 
    var query2 = connection.query(sql2); 
    query2.on("error", function (err) { 
     // handle error 
    }); 
    query2.on("result", function (row) { 
     result.push(row); 
    }); 
    query2.on("end", function() { 
     connection.end(); // close connection 
     console.log(result); // display result 
    }); 
}); 

希望這有助於。

1

我搜索這個職位通過谷歌,我發現之所以變量不起作用 嘗試這一點,對我的工作:

var connection = mysql.createConnection({multipleStatements: true}); 

默認節點mysql的,如果你只會在時間 只執行一個查詢已啓用創建連接設置的多個語句,那麼您的代碼應該可以工作。 希望它適合你。