java - 如何根据变量选择同一个表的不同数据

标签 java sql spring-boot jpa

我需要从连接表中选择一些数据。问题是,该表根据变量 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/

相关文章:

java - Controller 未重定向到我的 jsp

c# - SQL中 "WHERE x = ?"是什么意思

java - spring-boot 应用程序启动后立即关闭(计划)

sql - 选择受更新影响的行

spring-boot - 在 Windows 系统上将 Redis 与任何 Java IDE 结合使用

java - AWS S3 与 Spring Boot 错误 "profile file cannot be null"

java - 使用 java 从 anchor 标记中抓取网站的 href 值

java - 如何让 Liferay 不产生压缩的 HTML 代码?

java - 好的 URL : Wicket 1. 5 mountPage

sql - 在 SQL 子查询中使用多列