Postgresql 选择一个特定数据行(必需),以及3个其他数据行(必须包括特定数据行)

Postgresql 选择一个特定数据行(必需),以及3个其他数据行(必须包括特定数据行),postgresql,Postgresql,我需要选择一个特定行和另外两个不是该特定行的行(总共3行)。特定行必须始终包含在3个结果中。我该怎么做呢?我认为这一切都可以通过工会来实现,但我还有其他选择吗?谢谢大家!:) 以下是我创建示例表的脚本: create table users ( user_id serial primary key, user_name varchar(20) not null ); create table result_table1 ( result_id serial primar

我需要选择一个特定行和另外两个不是该特定行的行(总共3行)。特定行必须始终包含在3个结果中。我该怎么做呢?我认为这一切都可以通过工会来实现,但我还有其他选择吗?谢谢大家!:)

以下是我创建示例表的脚本:

create table users (
    user_id serial primary key,
    user_name varchar(20) not null
);

create table result_table1 (
    result_id serial primary key,
    user_id int4 references users(user_id),
    result_1 int4 not null
);

create table result_table2 (
    result_id serial primary key,
    user_id int4 references users(user_id),
    result_2 int4 not null
);

insert into users (user_name) values ('Kevin'),('John'),('Batman'),('Someguy');
insert into result_table1 (user_id, result_1) values (1, 20),(2, 40),(3, 70),(4, 42);
insert into result_table2 (user_id, result_2) values (1, 4),(2, 3),(3, 7),(4, 5);
以下是我的工会查询:

SELECT  result_table1.user_id,
        result_1,
        result_2

FROM    result_table1

INNER JOIN (
    SELECT  user_id

    FROM    users
) users 
ON users.user_id = result_table1.user_id

INNER JOIN (
    SELECT  result_table2.user_id,
            result_2

    FROM    result_table2
) result_table2 
ON result_table2.user_id = result_table1.user_id

WHERE   users.user_id = 1

UNION ALL

SELECT  result_table1.user_id,
        result_1,
        result_2

FROM    result_table1

INNER JOIN (
    SELECT  user_id

    FROM    users
) users 
ON users.user_id = result_table1.user_id

INNER JOIN (
    SELECT  result_table2.user_id,
            result_2

    FROM    result_table2
) result_table2 
ON result_table2.user_id = result_table1.user_id

WHERE   users.user_id != 1

LIMIT 3;
除了工会,还有其他选择吗?该查询可以工作并执行我现在想要的操作,但是如果我有一组较大的行,它是否会始终包含user_id=1(假设user_id=1将始终存在)?:(


谢谢大家!:)

你可以发布一个示例
DataFrame
,展示你想要的结果,以及你尝试过的一些事情吗?我认为
union all
是你最好的选择。重要的是如果特定的行不存在,你需要多少行。这取决于你。你的问题没有足够的信息。从您的Postgres版本和表定义开始,并显示您的查询。您有无限的选择。如果您发布SQL,我们可以告诉您它们是什么。或者至少解释一下您的查询试图做什么。