フィールドがnullである場合、テーブルからランダムにレコードを取得します

MisterLA:

私はOWNERIDがあるデータベーステーブルからランダムアパートを取得しようとしていますnullこのスクリプトはAltV上のGTA 5サーバー用に使用されている問題があるletrandomHouse = Math.floor(Math.random()*res.length);idがある場合、それはアパートの所有者を更新する習慣

player.data.ownerID = res[0]["id"];
            con.query('SELECT * FROM apartements WHERE owner = null', function(err, res, row){
                if(res){
                    let randomHouse = Math.floor(Math.random()*res.length);
                    console.log(randomHouse);
                    con.query('UPDATE apartements SET owner = ? WHERE id = ?', [player.data.ownerID, randomHouse], function(res, err, row){
                        if (err){
                            console.log(err);
                            console.log("test");
                        }
                        console.log(res);
                    });
                    console.log(res);
                } else {
                    console.log(err);
                }
});

フル・エクスポート関数

export function registerHouse(player){
    con.query('SELECT `id` FROM characters WHERE accountID = ?', [player.data.accountID], function(err, res, row){
        if(!err){
            player.data.ownerID = res[0]["id"];
            con.query('SELECT * FROM apartements WHERE owner = null', function(err, res, row){
                if(res){
                    let randomHouse = Math.floor(Math.random()*res.length);
                    console.log(randomHouse);
                    con.query('UPDATE apartements SET owner = ? WHERE id = ?', [player.data.ownerID, randomHouse], function(res, err, row){
                        if (err){
                            console.log(err);
                            console.log("test");
                        }
                        console.log(res);
                    });
                    console.log(res);
                } else {
                    console.log(err);
                }
            });
        } else {
            console.log(err);
        }
    });
}
GMB:

あなたのコードに問題があるWHERE中句SELECTの文:

WHERE owner = null

これは一致しません。nullであるかどうかをチェックするために、あなたが必要とするIS NULL構文を。

しかし、これまでの問題として、あなたは1つのステートメントでやりたいことができます。

update apartements 
set owner = ? 
where owner is null
order by rand()
limit 1

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=5909&siteId=1