Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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左外部联接查询未返回所有结果_Mysql_Sql - Fatal编程技术网

MYSQL左外部联接查询未返回所有结果

MYSQL左外部联接查询未返回所有结果,mysql,sql,Mysql,Sql,下面的查询没有为name1返回任何值,因为它没有wp\u postmeta.meta\u key='wpcf phone'。我使用的是LEFT-OUTER-JOIN认为它将返回name1的结果,因为它在wp_posts中有值,但它只返回name2的值,而wp_postETA.meta_键='wpcf phone' SELECT wp_posts.ID, wp_posts.post_content, wp_posts.post_title, wp_postmeta.meta_va

下面的查询没有为
name1
返回任何值,因为它没有
wp\u postmeta.meta\u key='wpcf phone'
。我使用的是
LEFT-OUTER-JOIN
认为它将返回
name1
的结果,因为它在
wp_posts
中有值,但它只返回
name2
的值,而
wp_postETA.meta_键='wpcf phone'

SELECT 
  wp_posts.ID,
  wp_posts.post_content,
  wp_posts.post_title,
  wp_postmeta.meta_value AS phone
FROM
  wp_posts
  LEFT OUTER JOIN wp_postmeta wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
WHERE
  wp_posts.post_type = 'solicitors' AND 
  wp_posts.post_status = 'publish' AND 
  wp_postmeta.meta_key = 'wpcf-phone' AND 
  (wp_posts.post_title LIKE '%name1%' OR 
  wp_posts.post_title LIKE '%name2%')

外部联接
“连接失败”时,它会用
NULL
值填充输出中的字段。因此,您可以使用
或IS NULL
来测试此条件。因此WHERE子句应该类似于:

WHERE
  wp_posts.post_type = 'solicitors' AND 
  wp_posts.post_status = 'publish' AND 
  (wp_postmeta.meta_key = 'wpcf-phone' OR
      wp_postmeta.meta_key IS NULL) AND 
  (wp_posts.post_title LIKE '%name1%' OR 
      wp_posts.post_title LIKE '%name2%')

外部联接
“连接失败”时,它会用
NULL
值填充输出中的字段。因此,您可以使用
或IS NULL
来测试此条件。因此WHERE子句应该类似于:

WHERE
  wp_posts.post_type = 'solicitors' AND 
  wp_posts.post_status = 'publish' AND 
  (wp_postmeta.meta_key = 'wpcf-phone' OR
      wp_postmeta.meta_key IS NULL) AND 
  (wp_posts.post_title LIKE '%name1%' OR 
      wp_posts.post_title LIKE '%name2%')

您正在引用此行where子句中的外部表:

wp_postmeta.meta_key = 'wpcf-phone'
从而消除了
wp\u postETA.meta\u键
为空的所有行,有效地将
左连接
转化为
内部连接
(因为
null='wpcf phone'
为假)

您应该将条件移动到联接:

SELECT 
  wp_posts.ID,
  wp_posts.post_content,
  wp_posts.post_title,
  wp_postmeta.meta_value AS phone
FROM
  wp_posts
  LEFT OUTER JOIN wp_postmeta wp_postmeta 
    ON (wp_posts.ID = wp_postmeta.post_id)
    AND wp_postmeta.meta_key = 'wpcf-phone' 
WHERE
  wp_posts.post_type = 'solicitors' AND 
  wp_posts.post_status = 'publish' AND 
  (wp_posts.post_title LIKE '%name1%' OR 
  wp_posts.post_title LIKE '%name2%')

您正在引用此行where子句中的外部表:

wp_postmeta.meta_key = 'wpcf-phone'
从而消除了
wp\u postETA.meta\u键
为空的所有行,有效地将
左连接
转化为
内部连接
(因为
null='wpcf phone'
为假)

您应该将条件移动到联接:

SELECT 
  wp_posts.ID,
  wp_posts.post_content,
  wp_posts.post_title,
  wp_postmeta.meta_value AS phone
FROM
  wp_posts
  LEFT OUTER JOIN wp_postmeta wp_postmeta 
    ON (wp_posts.ID = wp_postmeta.post_id)
    AND wp_postmeta.meta_key = 'wpcf-phone' 
WHERE
  wp_posts.post_type = 'solicitors' AND 
  wp_posts.post_status = 'publish' AND 
  (wp_posts.post_title LIKE '%name1%' OR 
  wp_posts.post_title LIKE '%name2%')

如果你没有必要,为什么要把on从句和where从句混在一起?如果你没有必要,为什么要把on从句和where从句混在一起