編輯:表結構,http://puu.sh/bQKRz/785c731604.png即使MySQL的 「where」 子句不被滿足,它返回一個排
/*
* Let's get a RANDOM question from the questions table
* Ignore questions the group has already
*/
Group.prototype.getRandomQuestion = function(callback){
var self = this;
var answered = this.answered.join();
var categories = this.categories;
var sql = "SELECT * FROM `questions` WHERE (`id` NOT IN (?) AND `category` IN (?)) ORDER BY RAND() LIMIT 1";
this.mysql_pool.getConnection(function(err, conn){
if(!err){
conn.query(sql, [answered, categories], function(err, r){
conn.release();
以上是我的代碼。出於某種原因,當它不應該時,它會不斷從數據庫中獲取至少一個結果。不應該滿足where子句。
我打開了PhpMyAdmin,運行相同的確切查詢,並插入相同的確切數據。它返回空。好。那麼爲什麼這段代碼沒有返回空呢?分別
下面是answered
和categories
的值:
answered
= 「1,2」
categories
= 「1,2,3,4」
在我的questions
表中,只有兩個問題。這兩個問題都有ID 1
& 2
。那麼,爲什麼這段代碼仍然返回一行?
它總是同一行嗎?如果是這樣,哪一行? – mscdex 2014-09-28 03:32:17
另外,你有沒有嘗試強迫'categories'爲'this.categories.join();'而不是'this.categories'?也許'mysql'正在做一些意想不到的數組值。 – mscdex 2014-09-28 03:33:57
@mscdex它總是第二行 – X33 2014-09-28 03:35:24