我想在 Mysql 中获取NULL值。 我的查询是这样的 - :
Select sc.message
FROM shipping_comment sc,
sales_flat_order sfo
where sfo.shipping_comment_id = sc.shipping_comment_id
AND sfo.increment_id = 100000429
所以如果订单没有。 100000429如果客户给出了评论,那么它显示如下: -
message
sample comment ok
但是对于任何订单,客户都没有发表任何评论。比如另一个id 100000430.然后在sfo.shipping_comment_id中将值存储在数据库中为NULL。那么如何为sc.message获取NULL,以便我的输出将是订单号。 100000430 - :
message
NULL
另一个问题是shipping_comment(sc)只存储对订单和评论有评论的评论。对于那些只生成shipping_comment_id。因此,如果订单没有评论,则该订单的发货评论表中不存在任何数据。 &安培;对于表sales_flat_order(sfo),如果订单没有评论,则其存储值为shipping_comment_id = NULL。 因此,在这种情况下,条件变为 - :
NULL=sc.shipping_comment_id
这不是sc.message。
那么如何在mysql表中获取NULL值? 请指导我。
答案 0 :(得分:3)
我不确定您的查询有什么问题?对于给定的订单号。 100000429,如果“shipping_comment”中有一条消息,您的查询将返回消息;否则它将返回一个空的结果集。
无论如何,如果您想要检索所有订单号及其评论(如果有的话),此查询应有所帮助:
SELECT `sfo`.*, `sc`.`message`
FROM `sales_flat_order` `sfo`
LEFT JOIN `shipping_comment` `sc` ON `sfo`.`shipping_comment_id` = `sc`.`shipping_comment_id`;
需要LEFT JOIN才能返回所有订单。
希望它有所帮助!
答案 1 :(得分:1)
你需要一个“左外连接”。有关语法和语义的详细信息,请参阅此问题。
What is the difference between "INNER JOIN" and "OUTER JOIN"?