从映射表中获取一个查询中的数据


v-star*위위
2025-03-18 08:45:36 (13天前)
  1. 我想从以下表中获取数据,这样我就不必调用多个查询并设置响应isLikedByUser的属性。 userId我发送请求。

帖子 - 表…

3 条回复
  1. 0# IP地址 | 2019-08-31 10-32



    如果用户对给定用户的每个帖子都喜欢自己的帖子,请在子查询和COALESCE上使用LEFT JOIN来获取真/假(1/0)标志




    1. SELECT p.*, COALESCE(isLikedByUSer, 0)
      FROM Posts p
      LEFT JOIN (SELECT 1 isLikedByUser, postId, userID FROM LikeMapping) as l ON l.postId = p.postId AND l.userId = p.userId
      WHERE p.userId = 100

    2. </code>

  2. 1# 氷寒 | 2019-08-31 10-32



    这可能比其他答案更快。




    1. SELECT p.*,
      lm.postid IS NOT NULL AS isLikedByUser
      FROM Posts AS p
      LEFT JOIN ( SELECT DISTINCT postid FROM LikeMapping ) AS lm
      ON lm.postid = p.postid

    2. </code>


    什么版本的MySQL?这可能需要5.6或更高版本。



    请提供

    EXPLAIN SELECT …

    如果你想进一步讨论。


登录 后才能参与评论