gpt4 book ai didi

mysql - 如何对 MySQL 进行基于条件的查询

转载 作者:行者123 更新时间:2023-11-29 15:42:31 25 4
gpt4 key购买 nike

我想创建一个论坛。

场景:
当用户单击论坛中的问题列表时,它将重定向一个页面,他可以在其中找到相应的问题和答案列表,

每当我使用下面提到的查询时,我都会从新页面上的问题表(im_forum_question)中找到问题。

'SELECT q.id, q.forum_question, q.forum_question_point
FROM im_forum_question as q '+
WHERE q.id='+"'"+req.params.id+"' "

但是当我将上面的代码与下面提到的答案获取查询混合时,我只得到已经回答的问题。对于未回答的问题,它显示错误。

'SELECT  q.id, q.forum_question, q.forum_question_point,  qa.forum_answer, qa.user_name_answer
FROM im_forum_question as q
INNER JOIN im_forum_question_answer as qa
ON qa.question_id = q.id
WHERE q.id='+"'"+req.params.id+"' "

因为如果没有人回答该问题,则该问题不会存储在答案表 (im_forum_question_answer) 中。

  1. 如果第 2 号查询(上面提到的)失败,有没有办法让第 1 号查询(上面提到的)执行。 (如果,否则)
  2. 如果在答案表中找不到答案,则仅应显示问题。

    exports.get_question_answer = function(req, res, next){
    db.sequelize.query(

    'SELECT q.id, q.forum_question, q.forum_question_point, qa.forum_answer, qa.user_name_answer FROM im_forum_question as q '+
    ' INNER JOIN im_forum_question_answer as qa ON qa.question_id = q.id '+
    ' WHERE q.id='+"'"+req.params.id+"' "
    ).then(function(data){
    console.log('Logs for Data', data);
    var arr = data[0];
    res.render('forum/question.ejs',{
    success:'',
    error:'',
    session: req.session.user,
    data:arr
    })
    })

    }

最佳答案

快速浏览后,我认为您没有得到答案的原因是您使用了INNER JOIN。内部联接仅返回两个表中共有的行,因此当在答案表中找不到特定 id 时,该行将在返回的表中完全跳过(有关连接的详细解释,请参阅 here )。

要实现您想要的效果,您应该使用LEFT JOIN。这将返回左表(在本例中为问题表)中的所有匹配记录。对于没有找到匹配答案的情况,条目将为空。

您可以修复的第二件事是您收到的错误。这很可能是由于您要返回

var arr = data[0];

但是,如果数组为空,则这将是未定义的。如果您不在代码中考虑这一点,则可能会导致错误。

关于mysql - 如何对 MySQL 进行基于条件的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com