Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql server MSSQL问题与Where In多子句_Sql Server_Hibernate_Hibernate Criteria - Fatal编程技术网

Sql server MSSQL问题与Where In多子句

Sql server MSSQL问题与Where In多子句,sql-server,hibernate,hibernate-criteria,Sql Server,Hibernate,Hibernate Criteria,我正在使用两种不同的数据库POSTGRE-SQL和MSSQL以及java hibernate标准API。标准的Sql转换如下所示: 从表t中选择*其中t.a,t.b在 选择maxthis_u0.a作为y0_0, 这是y1 从这张桌子上 按此\u.id分组 使用Where In-multi columns的查询在PostGre数据库中运行良好,但不适用于MSSQL。有人可以建议我使用聚合函数进行多列比较的SQL解决方案吗?使用联接: Select * From table t inner jo

我正在使用两种不同的数据库POSTGRE-SQL和MSSQL以及java hibernate标准API。标准的Sql转换如下所示:

从表t中选择*其中t.a,t.b在 选择maxthis_u0.a作为y0_0, 这是y1 从这张桌子上 按此\u.id分组 使用Where In-multi columns的查询在PostGre数据库中运行良好,但不适用于MSSQL。有人可以建议我使用聚合函数进行多列比较的SQL解决方案吗?

使用联接:

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_
如果是瓦查尔

SELECT * 
FROM table t 
WHERE (t.a + '-' + t.b) 
IN (SELECT (max(this_.a) + '-' + this_.b)
    FROM  table this_ )
如果是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_ )

什么是不工作?您尚未发布任何错误消息。但是,您的子查询没有GROUPBY子句,并且正在使用聚合;所以我假设错误告诉了你问题所在@Larnu我刚刚发布了部分查询。。我现在已经更新了。”不起作用意味着“MSSQL在这里只需要一列,所以它的give exception”子查询返回更多列“这就是为什么it在帖子中发布所有相关SQL和错误消息很重要的原因。否则人们的答案只是猜测。