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连接同一个表_Mysql_Sql - Fatal编程技术网

MySQL连接同一个表

MySQL连接同一个表,mysql,sql,Mysql,Sql,我有一个包含以下字段的“元数据”表: 身份证 邮政编码 元键 元值 我想循环浏览并显示每个帖子的列表(post\u id),其中有一个meta\u key='abc'条目,但没有一个meta\u key='def' 基本上,每个有meta_key='abc'条目的帖子都应该有meta_key='def'条目。我想生成列表,以便添加缺少的meta_key='def'条目 对自身进行外部(左)联接,通过在联接表中查找id为空的行来筛选不匹配的记录: select t1.* from meta_

我有一个包含以下字段的“元数据”表:

  • 身份证
  • 邮政编码
  • 元键
  • 元值
我想循环浏览并显示每个帖子的列表(
post\u id
),其中有一个
meta\u key='abc'
条目,但没有一个
meta\u key='def'

基本上,每个有
meta_key='abc'
条目的帖子都应该有
meta_key='def'
条目。我想生成列表,以便添加缺少的
meta_key='def'
条目

对自身进行外部(左)联接,通过在联接表中查找id为空的行来筛选不匹配的记录:

select t1.* 
from meta_data t1
left join meta_data t2 on t2.post_id = t1.post_id and t2.meta_key='def' 
where t1.meta_key='abc'
and t2.id is null

要实现这一点,您应该使用操作连接同一个表

SELECT a.*
FROM meta_data a
LEFT OUTER JOIN meta_data b ON a.post_id = b.post_id AND b.meta_value = 'def'
WHERE 
a.meta_value = 'abc'
AND b.post_id IS null
很好,但是你试过什么?