我需要从联接表中选择一些数据。事实是该表根据变量x更改其数据(如果x = 1,则数据为A,如果x = 2,则数据为B)
我正在尝试这样的事情:
"SELECT new nameDTO(joinTableA.dataA, joinTableB.dataB, table.something, table....) "
+ "FROM Table table "
+ "JOIN joinTable joinTableA"
+ "JOIN joinTable joinTableB "
+ "WHERE joinTableA.x = 1 AND joinTableA.x = 2"
+ "AND ..... "
但是,此WHERE无效,因为查询什么也不返回,而是返回两种情况的数据。
我希望这个问题可以理解,这有点棘手。
答案 0 :(得分:0)
您的问题中缺少一些信息,所以我做了一些弥补,希望这些信息与您要执行的操作足够接近。
我从两个表开始。我只显示表的内容,而不是定义。
表1
id content
-------------
1 Hello
2 World
table2
table1_id x content_a content_b
--------------------------------------
1 1 Content 1 Content 2
1 2 Content 3 Content 4
2 1 Content 5 Content 6
2 2 Content 7 Content 8
使用以下SQL语句
SELECT
t1.content `greeting`,
CASE
WHEN t2.x = 1 THEN t2.content_a
WHEN t2.x = 2 THEN t2.content_b
ELSE "Unknown x value"
END `content`
FROM
table1 `t1`
INNER JOIN table2 `t2` ON t2.table1_id = t1.id
;
结果将是
greeting content
----------------------
Hello Content 1
Hello Content 4
World Content 5
World Content 8
应该可以将其转换为JPQL查询或条件查询。