没有派生的查询 table

query without derived table

我有两个 tables flat 和 usertoflat 我想从 flat table 获取所有数据,条件是 usertoflat table.

我正在使用 JPA,但我没有在 jpa 中找到派生的 table 查询,下面是我的本机 sql 查询。

Table Flat

flat_id | flat_no | status
   1    |   1001  |   1
   2    |   1002  |   1
   3    |   1003  |   1
   4    |   1004  |   1


Table usertoflat

usertoflat_id | Name    | flat_id | status
      1       | ABC     |   1     |   1
      2       | ABC     |   1     |   2
      3       | XYZ     |   2     |   1
      4       | PQR     |   3     |   1


Required output

flat_id | flat_no | Name
   1    |   1001  | ABC
   2    |   1002  | XYZ
   3    |   1003  | PQR
   4    |   1004  | 

派生查询 table

select f.flat_id, f.flat_no, uf.name from flat f left join 
(select * from usertoflat where status  = 1 )
as uf on f.flat_id = uf.flat_id 

如何在不使用派生 table 的情况下实现同样的效果,因为我使用的是 JPA 并且我没有在 JPA 中找到派生 table 所以如果我可以获得本机 sql我将在 JPA 查询中转换相同的查询。

我想这就是你需要的?

select f.flat_id, f.flat_no, uf.name from flat f left join 
usertoflat uf on f.flat_id = uf.flat_id and uf.status  = 1 

您可以简单地进行左连接而不是创建子查询

SELECT
    f.flat_id,
    f.flat_no,
    uf.name
FROM flat f
LEFT JOIN usertoflat uf ON  f.flat_id = uf.flat_id AND uf.status = 1;

See Demo

SELECT
    f.flat_id,
    f.flat_no,
    uf.name
FROM flat f
LEFT JOIN usertoflat uf ON  f.flat_id = uf.flat_id 
WHERE uf.status IS NULL OR uf.status = 1;

See Demo