Mysql hibernate条件查询自联接并获取特定列和限制计数
我有一张MySql中的MonthlySubscriber表: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。 我想要
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