Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果记录为空,如何执行显示-1的子查询_Mysql_Database - Fatal编程技术网

Mysql 如果记录为空,如何执行显示-1的子查询

Mysql 如果记录为空,如何执行显示-1的子查询,mysql,database,Mysql,Database,如果min_stock显示为空,如何使其显示为-1 只是澄清一下,我不能使用join,我需要这样做:即使没有定义MINU库存,所有产品和仓库都会显示MINU库存 建议的优化将不胜感激。使用ifnull函数 SELECT w.warehouse, p.category, p.product, (select cr.min_stock from critical cr where cr.warehouse_id = w.i

如果min_stock显示为空,如何使其显示为-1

只是澄清一下,我不能使用join,我需要这样做:即使没有定义MINU库存,所有产品和仓库都会显示MINU库存


建议的优化将不胜感激。

使用
ifnull
函数

SELECT w.warehouse, 
       p.category, 
       p.product, 
      (select cr.min_stock 
       from critical cr 
       where cr.warehouse_id = w.id 
             and cr.product_id = p.id) as min_stock
FROM warehouse w, 
     product p

希望这对您有所帮助。

当然您可以使用
加入
。您需要一个
交叉联接
,因此应该明确说明如何组合这两个表。然后,您可以使用
左连接跟随
交叉连接

SELECT w.warehouse, 
       p.category, 
       p.product, 
      ifnull((select cr.min_stock 
       from critical cr 
       where cr.warehouse_id = w.id 
             and cr.product_id = p.id),0) as min_stock
FROM warehouse w, 
     product p

创建SQL行时,您可以批量更新所有值,或者将min_stock默认为-1。下面是我要做的:

更新关键集min_stock=-1,其中min_stock=NULL

请参见:
SELECT w.warehouse, p.category, p.product, 
       coalesce(cr.min_stock, -1) as min_stock 
FROM warehouse w cross join
     product p left join
     critical c
     on cr.warehouse_id = w.id and cr.product_id = p.id;