我已经有一段时间没遇到这个问题而且我似乎无法解决这个问题,我已经在Stackoverflow上查看了但是只能找到符合我问题的PHP或C#代码。我试图检查一行是否存在,如果它没有,则发送一条不存在的消息,如果它确实发送了一条消息。
这是我的代码,
query('SELECT * FROM `cases` WHERE `case`='+pool.escape(String(getCase)), function(err, row) {
if(err) {
logger.error('Error in DB');
logger.debug(err);
return;
}else{
console.log('Case row was found!');
}
});
此外,getCase是一个我可以更改的变量,但即使它不在数据库中,它似乎也会返回Case row was found!
答案 0 :(得分:0)
它返回Case row was found!
,因为您只是告诉回调在发生错误时停止。您需要扩展else
语句以检查row
变量中是否存在任何数据,如下所示:
query('SELECT * FROM `cases` WHERE `case`='+pool.escape(String(getCase)), function(err, row) {
if(err) {
logger.error('Error in DB');
logger.debug(err);
return;
} else {
if (row && row.length ) {
console.log('Case row was found!');
// do something with your row variable
} else {
console.log('No case row was found :( !');
}
}
});
答案 1 :(得分:0)
已接受的答案对我不起作用。我找到了另一种解决方案here
文章摘录:
您有一个表格地址,想检查是否已经有一个address_id = 100的行。 您可以使用COUNT进行检查:
SELECT COUNT(*) FROM address WHERE address_id = 100;
但是,如果您正在寻找一种更快的查询,答案为是/否:
SELECT EXISTS(SELECT 1 FROM address WHERE address_id = 100);
我想补充一点,我们也可以使用LIMIT
:
SELECT * FROM address WHERE address_id = 100 LIMIT 1;