sql - 将 MYSQL 查询的 1 列设置为 Null

标签 sql mysql

我有以下 MYSQL 查询,执行时显示所有无效 Comment_ID表中的 s Order_Info Order_Comments 中不存在的 table 。我将如何修改此查询以设置 Comment_IDNULL对于找到的每条记录?

   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

Order_Comments 表如下所示:

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...

最佳答案

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

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 的。

关于sql - 将 MYSQL 查询的 1 列设置为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539938/

相关文章:

python - Django 查询不以整数形式返回 id 值

php - 无法将字符串偏移量用作数组 - 我需要在 foreach 中反序列化吗?

sql - 将 HHmmss 格式的 varchar(6) 转换为 sql 时间格式

mysql - 优化 "SQL Where Clause"的表设计

javascript - 如何将标签映射到标签同义词?

javascript - Ajax PHP 查询根据日期检索数据

java - 比较两个数据库中的数据百分比或整个数据集的最佳方法是什么?

mysql - SQL:根据其他重复值选择重复值的精确最大值

sql - 我想将随机性别(男或女)值插入 Oracle 中的表中

php - HTML 表单定义插入到数据库