基于另一个表的内容在MySQL中选择布尔值

基于另一个表的内容在MySQL中选择布尔值,mysql,sql,Mysql,Sql,我有以下表格: Name: Posts Id Creator Title Body Tags Time 1 1 Test Test Test 123456789 及 我想返回第一个表中的所有值和一个布尔值,说明另一个表中是否有记录,其中Type='delete' SELECT `Posts`.*, IF(`Action`.`Type`='deleted',1,0) AS "Deleted" FROM `Posts` JOIN `Action` ON `Actio

我有以下表格:

Name: Posts

Id Creator Title Body Tags Time
1  1       Test  Test Test 123456789

我想返回第一个表中的所有值和一个布尔值,说明另一个表中是否有记录,其中Type='delete'

SELECT `Posts`.*, IF(`Action`.`Type`='deleted',1,0) AS "Deleted" 
FROM `Posts` JOIN 
     `Action` ON `Action`.`Target` = `Posts`.`Id` 
ORDER BY `Id` DESC;
第二个表中的目标字段对应于第一个表中的Id

我有一个不起作用的查询。首先,它为Action表中的每个对应行返回一个行的实例,即使对于“delete”以外的操作也是如此

SELECT `Posts`.*, IF(`Action`.`Type`='deleted',1,0) AS "Deleted" 
FROM `Posts` JOIN 
     `Action` ON `Action`.`Target` = `Posts`.`Id` 
ORDER BY `Id` DESC;
我不希望为Type='like'或Type='delete'以外的任何其他类型返回第一个表中行的多个副本

SELECT `Posts`.*, IF(`Action`.`Type`='deleted',1,0) AS "Deleted" 
FROM `Posts` JOIN 
     `Action` ON `Action`.`Target` = `Posts`.`Id` 
ORDER BY `Id` DESC;
此示例的预期结果:

Id Creator Title Body Tags Time Deleted
1  1       Test  Test Test 123456789 1

我希望这是有意义的,对于如此冗长的问题/解释,我深表歉意。

正如您看到的,您使用的是删除,而在数据集中它是删除

选择Posts.*,IFAction.Id为空,0,1为已删除 发帖 左连接动作 在Action.Target=Posts.Id和Type='delete' 如果你不在乎表现

SELECT Posts.*,
       exists
  (SELECT 1
   FROM Action
   WHERE Target = Posts.Id
     AND TYPE='delete') AS Deleted
FROM Posts

有样本和期望的结果集吗?@MKhalidJunaid添加:您也有期望的结果集needed@MKhalidJunaid哎呀。好了。添加。如果这是您想要的结果集,那么@lampdev给出的答案有什么问题?它排除了第一个表中所有在另一个表中具有“like”操作的结果。我仍然希望选择这些,但只需使用Deleted=0即可。但是,如果我从中删除WHERE子句,它会为每个“like”返回重复的行。