我使用了两种不同的数据库POSTGRE-SQL和MSSQL以及java-hibernate标准API。条件的Sql转换如下所示:
Select * From table t WHERE (t.a, t.b) IN (SELECT max(this_.a) AS y0_, this_.b AS y1_ FROM table this_ GROUP BY this_.id )这个多列中的Where查询在PostGre数据库中工作得很好,但不能与MSSQL一起使用。有人建议我使用.Can解决多列与聚合函数的比较吗?
发布于 2018-05-08 16:10:14
使用联接:
Select *
From table t
inner join (
SELECT max(this_.a) AS y0_
, this_.b AS y1_
FROM table this_
Group by this_.b) a on t.a = a.y0_ and t.b = y1_发布于 2018-05-08 16:16:09
如果是varchar
SELECT *
FROM table t
WHERE (t.a + '-' + t.b)
IN (SELECT (max(this_.a) + '-' + this_.b)
FROM table this_ )if为int
SELECT *
FROM table t
WHERE (CONVERT(nvarcahr(32), t.a) + '-' + CONVERT(nvarcahr(32), t.b))
IN (SELECT (CONVERT(nvarcahr(32), max(this_.a)) + '-' + CONVERT(nvarcahr(32),this_.b))
FROM table this_ )https://stackoverflow.com/questions/50228805
复制相似问题