将MYSQL查询的1列设置为Null

将MYSQL查询的1列设置为Null,sql,mysql,Sql,Mysql,我有下面的MYSQL查询,当执行该查询时,它会显示表Order\u Info中所有无效的Comment\u IDs,这些在Order\u Comments表中不存在。如何修改此查询以将找到的每个记录的注释\u ID值设置为NULL SELECT Order_Info.* FROM Order_Info LEFT JOIN Order_Comments ON Order_Info.COMMENT_ID = Order_Comments.Comment_ID WHERE

我有下面的MYSQL查询,当执行该查询时,它会显示表
Order\u Info
中所有无效的
Comment\u ID
s,这些在
Order\u Comments
表中不存在。如何修改此查询以将找到的每个记录的
注释\u ID
值设置为
NULL

   SELECT Order_Info.* 
     FROM Order_Info 
LEFT JOIN Order_Comments ON Order_Info.COMMENT_ID = Order_Comments.Comment_ID
    WHERE Order_Comments.Comment_ID IS NULL 
      AND Order_Info.COMMENT_ID IS NOT NULL
订单注释表如下所示:

Comment_ID  Order_Number    Order_Comments
14          8989        Submitted by Gordon, Customer Se...
15          4544        Please include the cd when the b...
17          8787        Previously ordered by company, a...
23          8789        We downloaded the trial. Our is q...

我的解决方案更像是一种变通办法

  • 将上面的查询导出到csv文件,在OpenOffice Calc中打开并删除注释ID字段,保留标题不变
  • 运行查询并从订单信息表中删除结果
  • 导入在步骤1中创建的新csv文件,并使用NaviCat进行附加

  • 因此,也许不是理想的解决方案,但它起了作用。

    我的解决方案更像是一种变通方法

  • 将上面的查询导出到csv文件,在OpenOffice Calc中打开并删除注释ID字段,保留标题不变
  • 运行查询并从订单信息表中删除结果
  • 导入在步骤1中创建的新csv文件,并使用NaviCat进行附加

  • 因此,可能不是理想的解决方案,但它起了作用。

    您可以使用where子句中使用的相关子查询编写update语句

    UPDATE Order_Info oi
    SET comment_ID = NULL
    WHERE NOT EXISTS (
        SELECT *
        FROM Order_Comments oc
        WHERE oc.comment_ID = oi.comment_ID)
    
    简单英语:在OrderInfo中,当OrderComments中没有与此行(commentID)匹配的条目时,将commentID设置为null


    语句应该是标准SQL,而不是特定于mySQL。

    您可以使用where子句中使用的相关子查询编写update语句

    UPDATE Order_Info oi
    SET comment_ID = NULL
    WHERE NOT EXISTS (
        SELECT *
        FROM Order_Comments oc
        WHERE oc.comment_ID = oi.comment_ID)
    
    简单英语:在OrderInfo中,当OrderComments中没有与此行(commentID)匹配的条目时,将commentID设置为null


    该语句应该是标准SQL,而不是特定于mySQL。

    工作起来很有魅力!非常感谢。我在另一张类似情况的桌子上再次验证了这一点。再次感谢你!工作得很有魅力!非常感谢。我在另一张类似情况的桌子上再次验证了这一点。再次感谢你!