如何使用第一个查询中的数据来检查第二个查询?

时间:2018-03-25 15:05:22

标签: mysql

以下是我的第一个查询,我用它来获取发布数据和创建者数据,这些数据是从post和account_data_base表格以post.date_created顺序创建的。

SELECT post.*, account_data_base.* FROM post 
JOIN account_data_base ON post.creator_id = 
account_data_base.user_uid ORDER BY post.date_created DESC

这是我在运行1st查询后在php中的第二个查询,我用它来检查帖子创建者是否喜欢他/她的帖子。

$stmt = $conn->prepare("SELECT EXISTS(SELECT * FROM like 
WHERE post_id = ? and userLike_Id = ?)");
$stmt->bind_param("ss", $postId, $account_data_base_id);

正如您所见,$ postId和$ account_data_base_id是我从第一个查询中获得的值。我想知道有没有一种方法可以同时组合2个查询,我可以获得发布数据,创建者数据以及我的第二个查询来检查是否喜欢?

更新:这是我尝试的但是类似的检查没有显示准​​确的信息:

SELECT post.*, account_data_base.*, 
EXISTS(SELECt * FROM like WHERE like.post_id = post.id and like.userLike_Id = account_data_base.user_uid) FROM post 
JOIN account_data_base ON post.creator_id = 
account_data_base.user_uid ORDER BY post.date_created DESC

1 个答案:

答案 0 :(得分:0)

您可以在SELECT子句中将EXISTS查询用作子查询:

SELECT post.*, a.*, EXISTS (
    SELECT * FROM `like` l
    WHERE l.post_id     = p.id
      and l.userLike_Id = a.id
) as likeExists
FROM post p 
JOIN account_data_base a ON p.creator_id = a.user_uid
ORDER BY p.date_created DESC

这将添加likeExists1字段0。而且您不需要为每个帖子运行一次查询。