使用带有IN运算符的子查询和自定义值

问题描述 投票:0回答:2

我找不到适合我问题的答案。

我需要知道如何通过SQL中的IN运算符将子查询与自定义值一起使用。这是我想出的查询示例:

SELECT posts.content, users.username,users.name, users.verified
FROM posts, users 
WHERE users.uid = posts.post_by 
AND posts.post_by IN ((SELECT user_uid FROM user_data.user1_following), 'USER_UID')
ORDER BY posts.id DESC;

此查询旨在仅显示用户下表中来自用户的帖子-并且还应显示原始用户自己的帖子。

post_by代表用户UID(唯一ID)

如果用户仅关注一个人,则此查询有效。如果他们跟随多个人,则会返回错误。它指出以下内容:

more than one row returned by a subquery used as an expression

我知道这是从区块传来的:

((SELECT user_uid FROM user_data.user1_following), 'USER_UID')

如何使用子查询和自定义值('USER_UID')来获得所需的结果?欢迎使用其他方法,只要它们能产生我想要的结果即可。

sql postgresql
2个回答
0
投票

使用JOIN !!!!

我发现您的逻辑有点不清楚-我不确定您是否要“跟随”或“跟随”。但想法是:

SELECT p.content, u.username, u.name, u.verified
FROM posts p JOIN
     users u
     ON u.uid = p.post_by 
WHERE p.post_by = $user_uid OR
      EXISTS (SELECT 1
              FROM user_data ud
              WHERE ud.user1_following = $user_uid AND
                    ud.user_uid = p.post_by 
             );
ORDER BY p.id DESC;

0
投票

您可以在UNION子句中使用IN,只要user_uid具有字符类型:

IN (SELECT user_uid FROM user_data.user1_following
      UNION
    SELECT 'USER_UID')
© www.soinside.com 2019 - 2024. All rights reserved.