基于另一个表的内容在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”返回重复的行。