我需要从连接表中选择一些数据。问题是,该表根据变量 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 不起作用,因为查询没有返回任何内容,而是返回两种情况的数据。
我希望这个问题可以理解,这有点棘手。
最佳答案
您的问题中缺少一些信息,因此我弥补了一些信息,希望这与您想要做的事情足够接近。
我从两个表开始。我只显示表格的内容,而不显示定义。
表1
id content
-------------
1 Hello
2 World
表2
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 查询或 Criteria 查询。
关于java - 如何根据变量选择同一个表的不同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57656628/