Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 为什么不合并或null对来自左联接的结果起作用?_Mysql_Sql - Fatal编程技术网

Mysql 为什么不合并或null对来自左联接的结果起作用?

Mysql 为什么不合并或null对来自左联接的结果起作用?,mysql,sql,Mysql,Sql,在下面的sql中,为什么合并不起作用,甚至是null?是不是因为左路的加入有什么关系 在这种情况下,子查询没有要返回的行。我eitemId='US1'在表amgb中不存在 我使用的是Windows764上的MySql 5.5.25 SELECT a.itemName, (SELECT coalesce(itemImageName,'default.jpg') // always null FROM amgb b WHERE a.userId = b.userId AND a

在下面的sql中,为什么合并不起作用,甚至是null?是不是因为左路的加入有什么关系

在这种情况下,子查询没有要返回的行。我e
itemId='US1'
在表
amgb
中不存在

我使用的是Windows764上的MySql 5.5.25

SELECT  a.itemName,
  (SELECT coalesce(itemImageName,'default.jpg') // always null
    FROM amgb b
    WHERE a.userId = b.userId AND a.itemId = b.itemId
    LIMIT 1
  ) AS itemImageName
FROM amga a 
WHERE a.userId = 1 AND a.itemId = 'US1';

(SELECT if(itemImageName IS null,'default.jpg',itemImageName) // always null

它总是
NULL
的原因是
COALESCE
位于子查询内部。而是像这样把它移到外面:

SELECT  a.itemName,
  COALESCE((SELECT itemImageName 
    FROM amgb b
    WHERE a.userId = b.userId AND a.itemId = b.itemId
    LIMIT 1
  ), 'default.jpg') AS itemImageName
FROM amga a 
WHERE a.userId = 1 AND a.itemId = 'US1';

它总是
NULL
的原因是
COALESCE
位于子查询内部。而是像这样把它移到外面:

SELECT  a.itemName,
  COALESCE((SELECT itemImageName 
    FROM amgb b
    WHERE a.userId = b.userId AND a.itemId = b.itemId
    LIMIT 1
  ), 'default.jpg') AS itemImageName
FROM amga a 
WHERE a.userId = 1 AND a.itemId = 'US1';

它总是
NULL
的原因是
COALESCE
位于子查询内部。而是像这样把它移到外面:

SELECT  a.itemName,
  COALESCE((SELECT itemImageName 
    FROM amgb b
    WHERE a.userId = b.userId AND a.itemId = b.itemId
    LIMIT 1
  ), 'default.jpg') AS itemImageName
FROM amga a 
WHERE a.userId = 1 AND a.itemId = 'US1';

它总是
NULL
的原因是
COALESCE
位于子查询内部。而是像这样把它移到外面:

SELECT  a.itemName,
  COALESCE((SELECT itemImageName 
    FROM amgb b
    WHERE a.userId = b.userId AND a.itemId = b.itemId
    LIMIT 1
  ), 'default.jpg') AS itemImageName
FROM amga a 
WHERE a.userId = 1 AND a.itemId = 'US1';

您的第二个查询似乎使用了前一个查询中的别名,因此这可能是一个问题。请阅读我写的关于如何提出适当问题的文章,它将帮助您获得更准确、更快的答案您的第二个查询似乎使用了前一个查询中的别名,所以这可能是个问题。请阅读我写的关于如何提问的文章,它将帮助您获得更好、更准确、更快的答案您的第二个查询似乎使用了前一个查询的别名,因此这可能是个问题。请阅读我写的关于如何提问的文章,这将帮助您获得更好、更准确、更快的答案您的第二个查询似乎使用了前一个查询的别名,因此这可能是一个问题。请阅读我写的关于如何提问的文章,这将帮助您获得更好、更准确、更快的答案