JPQL JOIN 查询对应值的行数(多列)

Posted

技术标签:

【中文标题】JPQL JOIN 查询对应值的行数(多列)【英文标题】:JPQL JOIN query number of rows with corresponding value (for multiple columns) 【发布时间】:2016-01-14 00:17:32 【问题描述】:

考虑这两个表

平均游戏桌

firstGame   secondGame  thirdGame
   10         20           30

人员表

Person  first second  third
Bob      10     10      30
Bob      20     10      30
Bob      10     20      30

我正在尝试返回 bob 得分与 AverageGame 表中的平均值相同的次数(例如,他第一次获得 10 次,第二次获得 20 次,第三次获得 30 次的次数) 结果应该是

[2,1,3]

任何人都可以告诉我如何做到这一点,因为我目前只能在一个专栏中做到这一点,非常感谢任何帮助,谢谢

【问题讨论】:

您需要sql 解决方案吗? 嗨,vkp 最好寻找 jpql,但 sql 可以提供帮助,因为我可以尝试实现它,而不是感谢格式化我的问题,你能告诉我你是怎么做到的吗? 【参考方案1】:

这有点奇怪。这是我的方法:

http://sqlfiddle.com/#!9/1a3720/2

SELECT person, 
  SUM(IF(`first` = firstGame,1,0)) firstCount,
  SUM(IF(`second` = secondGame,1,0)) secondCount,
  SUM(IF(`third` = thirdGame,1,0)) thirdCount
FROM Person
LEFT JOIN AverageGame
ON 1
GROUP BY person

但我的问题是,当 AverageGame 表的记录多于 1 条时,您期望会发生什么?

【讨论】:

我知道这看起来有点奇怪,但这只是解决问题的方法。感谢您的帮助,我今晚会试一试。至于你的问题,averageGame 表有另一列作为主键,表示游戏的位置,但每个位置的值永远不会改变

以上是关于JPQL JOIN 查询对应值的行数(多列)的主要内容,如果未能解决你的问题,请参考以下文章

计算带有子查询的行数的比率

计算其中的行数以找到特定值的行数[重复]

JPQL 构造函数表达式中的 JPQL 和子查询

当结果不为空时,num_rows() 未返回正确的行数

显示具有相同值的行数

hive mysql count distinct 多列