我有两个表 flat 和 usertoflat 我想在 usertoflat 表上使用 where 条件从平面表中获取所有数据。
我正在使用 JPA 但我没有在 jpa 中找到派生表查询,下面是我的 native 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 |
查询派生表
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
如何在不使用派生表的情况下实现同样的效果,因为我使用的是 JPA 并且我没有在 JPA 中找到派生表,所以如果我可以获得 native 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
WHERE uf.status IS NULL OR uf.status = 1;
关于mysql - 没有派生表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39325566/