Mysql 包含用户已保存产品的所有产品的列表

Mysql 包含用户已保存产品的所有产品的列表,mysql,sql,Mysql,Sql,我在尝试找出一个查询时遇到了一个问题,该查询允许我显示所有产品的列表,以及显示用户是否保存了任何给定产品 我有3个表涉及到查询用户、产品用户、产品用户。 我通过连接三个表并使用以下查询检查user_id是否为null来确定用户是否保存了产品: SELECT products.*, users.id as 'user_id' FROM products LEFT JOIN product_user ON products.id = product_user.product_id

我在尝试找出一个查询时遇到了一个问题,该查询允许我显示所有产品的列表,以及显示用户是否保存了任何给定产品

我有3个表涉及到查询用户、产品用户、产品用户。 我通过连接三个表并使用以下查询检查user_id是否为null来确定用户是否保存了产品:

SELECT products.*, users.id as 'user_id' FROM products
       LEFT JOIN product_user ON  products.id = product_user.product_id
       LEFT JOIN users ON product_user.user_id = users.id AND users.id =1;
但是,当用户保存了产品用户标识为空版本且用户标识为1版本时,将返回重复的行。distinct语句将不起作用,因为在这种情况下,行不明显。什么是确保我只取回不同产品的最佳实践?我需要返回整个产品列表,无论用户是否保存了它


这是在mysql中查询的。

我认为这符合您的要求:

select p.*,
       (select pu.user_id
        from product_user pu
        where pu.product_id = p.id and pu.user_id = 1
        limit 1
       ) as user_id
from products p;

每个产品只返回一行。该行将只有一次用户id,并且必须匹配您传入的任何内容。

工作得非常好!非常感谢。