没有派生的查询 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;
或
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;
我有两个 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;
或
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;