我有一个 courier_routes 表,它有两个指向位置表的外键。courier_routes 表中的列是 start_location_id 和 end_location_id。(我正在使用甲骨文)
我想在 courier_routes 表中找到快递员去过的所有不同地点。
考虑这个例子
|id |start_location_id| end_location_id|...
|1|1|2|
|2|1|3|
|3|4|5|
|4|2|1|
我想找回 ids 1 2 3 4 5
我的有效 SQL 是
SELECT loc FROM (
SELECT start_location_id AS loc FROM courier_routes
UNION
SELECT end_location_id AS loc FROM courier_routes);
我想把它翻译成 JPA。Hibernate 不支持联合,所以我考虑过进行子查询。这样做的问题是它可能会影响性能。
我在想类似的东西(伪代码......)
SELECT id FROM locations where id in (
(SELECT start_location_id FROM courier_routes)
OR
(SELECT end_location_id FROM courier_routes));
有没有更简单的方法?这张表会变大,所以我真的不想使用子查询。
我应该通过将两个单独的查询结果添加到一个集合中来在 java 中进行联合吗?
谢谢