Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql hibernate条件查询自联接并获取特定列和限制计数_Mysql_Hibernate_Hibernate Criteria - Fatal编程技术网

Mysql hibernate条件查询自联接并获取特定列和限制计数

Mysql hibernate条件查询自联接并获取特定列和限制计数,mysql,hibernate,hibernate-criteria,Mysql,Hibernate,Hibernate Criteria,我有一张MySql中的MonthlySubscriber表: CREATE TABLE MonthlySubscriber ( MobileNo varchar(20) NOT NULL, Month int(11) NOT NULL, PRIMARY KEY (MobileNo, Month) ); 一个手机号码可以在一个多月内多次出现。所以根据手机号码,我必须加入我的桌子 要求: 我想要自加入我的表,只想要第一个表中的MobileNo和Month,第二个表中的Month。 我想要

我有一张MySql中的MonthlySubscriber表:

CREATE TABLE  MonthlySubscriber (
 MobileNo varchar(20) NOT NULL,
 Month int(11) NOT NULL,
 PRIMARY KEY (MobileNo, Month)
 );
一个手机号码可以在一个多月内多次出现。所以根据手机号码,我必须加入我的桌子

要求:

我想要自加入我的表,只想要第一个表中的MobileNo和Month,第二个表中的Month。 我想要(第一个表中的所有mobileNo和月数以及第二个表中的月数)和order by和group by两列(第一个表中的月数和第二个表中的月数)

我的MySql查询:

 Select COUNT(t.MSI), t.Mon1 ,t.Mon2 from
 ( SELECT
     MonthlySubscriber.MobileNo as MSI,
     MonthlySubscriber.Month as Mon1,
     MonthlySubscriber.Month as Mon2
   FROM MonthlySubscriber as MonthlySubscriber
   LEFT JOIN MonthlySubscriber as MonthlySubscriber on
         (MonthlySubscriber.MobileNo = MonthlySubscriber.MobileNo )
   ORDER by MonthlySubscriber.Month
 )
 t GROUP BY t.Mon1, t.Mon2;
我希望在Hibernate条件查询中使用完全相同的查询

范例

桌子

注意:月份是1-12之间的整数

SELECT count(MobileNo),
count( case when m.Month=1 then m.Month else 0 end ) as Month 1,
count( case when m.Month=2 then m.Month else 0 end ) as Month 2,
count( case when m.Month=3 then m.Month else 0 end ) as Month 3,
.
.
.
count( case when m.Month=12 then m.Month else 0 end ) as Month 12
FROM MonthlySubscriber m
GROUP BY m.Month

你能提供样本数据吗?请把你的问题说清楚,或者你能详细说明/告诉我们你想要实现什么或输出什么吗?对不起,提问方式不好,事实上,这是我的第一个问题,你想做的是一个问题,但如果你创建这样的查询时引用同一个查询和12个子查询,这是可能的,我不推荐。你能在条件中使用这个查询吗,因为我不知道我们在未来必须使用哪个数据库。这将是一个不同的问题。您必须在hibernate标准中向我们提供有关java类的更多信息。
SELECT count(MobileNo),
count( case when m.Month=1 then m.Month else 0 end ) as Month 1,
count( case when m.Month=2 then m.Month else 0 end ) as Month 2,
count( case when m.Month=3 then m.Month else 0 end ) as Month 3,
.
.
.
count( case when m.Month=12 then m.Month else 0 end ) as Month 12
FROM MonthlySubscriber m
GROUP BY m.Month