标签: in-clause

将列表传递给HQL或SQL中的IN子句?

List<Strings>通过执行查询得到.这必须传递给IN子句值的另一个查询.如何在HQL中传递它们?

我们可以转换ListArray并且可以通过它,这不是问题.

最后,我必须通过列表List<String>ArrayString形成的IN子句.

java hibernate hql in-clause

39
推荐指数
1
解决办法
9万
查看次数

使用JDBC参数化IN子句的最佳方法是什么?

假设我有一个表单查询

SELECT * FROM MYTABLE WHERE MYCOL in (?)
Run Code Online (Sandbox Code Playgroud)

我想参数化参数.

有没有一种直接的方法在Java中使用JDBC,以一种可以在不修改SQL本身的情况下在多个数据库上工作的方式?

我发现的最接近的问题与C#有关,我想知道Java/JDBC是否有不同之处.

java sql jdbc in-clause

37
推荐指数
4
解决办法
6万
查看次数

如何将变量传递给IN子句?

假设我有一个SP,其SELECT声明如下,

SELECT product_id, product_price FROM product 
WHERE product_type IN ('AA','BB','CC');
Run Code Online (Sandbox Code Playgroud)

但是数据转到该IN子句必须通过包含值字符串的单个变量.下面有东西链接

SELECT product_id, product_price FROM product 
WHERE product_type IN (input_variables);
Run Code Online (Sandbox Code Playgroud)

但它没有那样工作.知道怎么做吗?

mysql variables stored-procedures in-clause

33
推荐指数
1
解决办法
3万
查看次数

JPA将列表传递给命名本机查询中的IN子句

我知道我可以在JPA中将列表传递给命名查询,但NamedNativeQuery怎么样?我尝试了很多方法,但仍然无法将列表传递给NamedNativeQuery.任何人都知道如何将列表传递给NamedNativeQuery中的in子句?非常感谢你!

NamedNativeQuery如下:

@NamedNativeQuery(
   name="User.findByUserIdList", 
   query="select u.user_id, u.dob, u.name, u.sex, u.address from user u "+
         "where u.user_id in (?userIdList)"
)
Run Code Online (Sandbox Code Playgroud)

它被称为这样:

List<Object[]> userList = em.createNamedQuery("User.findByUserIdList").setParameter("userIdList", list).getResultList();
Run Code Online (Sandbox Code Playgroud)

但结果并不像我预期的那样.

System.out.println(userList.size());  //output 1

Object[] user = userList.get(0);
System.out.println(user.length);   //expected 5 but result is 3
System.out.println(user[0]);       //output MDAVERSION which is not a user_id
System.out.println(user[1]);       //output 5
System.out.println(user[2]);       //output 7
Run Code Online (Sandbox Code Playgroud)

jpa arraylist in-clause nativequery

28
推荐指数
5
解决办法
6万
查看次数

使用in子句选择"按字段对查询"

我有一个叫做玩家的桌子如下:

First_Id    Second_Id     Name
1           1             Durant
2           1             Kobe
1           2             Lebron
2           2             Dwight
1           3             Dirk
Run Code Online (Sandbox Code Playgroud)

我希望在这个表上写一个select语句来检索其第一个id和第二个id匹配一堆指定的第一个和第二个id的所有行.

因此,例如,我希望选择第一个和第二个ID如下的所有行:(1,1),(1,2)和(1,3).这将检索以下3行:

First_Id    Second_Id    Name
1           1            Durant
1           2            Lebron
1           3            Dirk
Run Code Online (Sandbox Code Playgroud)

是否可以以下列方式编写选择查询:

SELECT * 
FROM PLAYERS
WHERE (First_Id, Second_Id) IN ((1,1), (1,2) and (1,3))?
Run Code Online (Sandbox Code Playgroud)

如果有一种方法可以编写类似于上面的SQL我想知道.有没有办法为IN子句指定表示多行的值,如图所示.

我正在使用DB2.

sql database db2 in-clause

27
推荐指数
2
解决办法
3万
查看次数

SQL Server - 包含多个字段的IN子句

是否可以在IN子句中包含多个字段?类似于以下内容:

select * from user
where code, userType in ( select code, userType from userType )
Run Code Online (Sandbox Code Playgroud)

我正在使用ms sql server 2008


我知道这可以通过连接和存在来实现,我只是想知道它是否可以用该IN子句完成.

sql-server select in-clause sql-server-2008

18
推荐指数
3
解决办法
6万
查看次数

从表中选择Multiple Ids

我想根据url字符串选择一些id,但是我的代码只显示第一个.如果我写手册的id's它很棒.

我有这样的网址http://www.mydomain.com/myfile.php?theurl=1,2,3,4,5(ids)

现在在myfile.php我有我的sql连接和:

$ids = $_GET['theurl']; (and i am getting 1,2,3,4,5)

如果我使用这个:

$sql = "select * from info WHERE `id` IN (1,2,3,4,5)";
$slqtwo = mysql_query($sql);
while ($tc = mysql_fetch_assoc($slqtwo)) {
    echo $tc['a_name'];
    echo " - ";
}
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果.现在,如果我使用下面的代码,它不起作用:

$sql = "select * from info WHERE `id` IN ('$ids')";
$slqtwo = mysql_query($sql);
while ($tc = mysql_fetch_assoc($slqtwo)) {
    echo $tc['a_name'];
    echo " - ";
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

mysql sql select in-clause find-in-set

12
推荐指数
1
解决办法
5万
查看次数

where IN 子句 - 多列(querydsl)

我有两对的三个整数值。
我想将其用作 WHERE 子句中的 IN 列表。

(2019, 5) (2019, 6) (2019, 7)

我想在这样的查询中使用上面的两对列表:

SELECT
    *
FROM
    WEEK_REPORT A
WHERE
    A.user_id IN ('test2','test5' ) AND
    (A.year, A.week_no) IN ((2019,4),(2019,5),(2019,6));
Run Code Online (Sandbox Code Playgroud)

为此,我写了如下源代码:

// lastYear=2019, lastWeekNo=4
Tuple t = JPAExpressions.select(Expressions.constant(lastYear), Expressions.constant(lastWeekNo))
    .from(weekReport)
    .fetchOne();

// currentYear=2019, currentWeekNo=5        
Tuple t2 = JPAExpressions.select(Expressions.constant(currentYear), Expressions.constant(currentWeekNo))
    .from(weekReport)
    .fetchOne();

// nextYear=2019, nextWeekNo=4
Tuple t3 = JPAExpressions.select(Expressions.constant(nextYear), Expressions.constant(nextWeekNo))
    .from(weekReport)
    .fetchOne();

return queryFactory
    .select(weekReport)
    .from(weekReport)
    .where(weekReport.user.eq(user)
        .and(Expressions.list(weekReport.year, weekReport.weekNo).in(t, t2, t3)))
    .fetch();
Run Code Online (Sandbox Code Playgroud)

但是,不会输出正确的结果并发生错误。

java.lang.UnsupportedOperationException: null
    at com.querydsl.jpa.JPASubQuery.fetchOne(JPASubQuery.java:66) ~[querydsl-jpa-4.1.4.jar:na]
Run Code Online (Sandbox Code Playgroud)

我在官方文档里查了一下,没有出来。
有办法吗?

谢谢你。

mysql sql in-clause querydsl

10
推荐指数
1
解决办法
1252
查看次数

MySQL使用WHERE`id` IN指定确切的顺序(...)

是否有一种简单的方法可以通过WHERE idIN(...)子句分别订购MySQL结果?例:

SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3)
Run Code Online (Sandbox Code Playgroud)

回来

Article with id = 4
Article with id = 2
Article with id = 5
Article with id = 9
Article with id = 3
Run Code Online (Sandbox Code Playgroud)

并且

SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3) LIMIT 2,2
Run Code Online (Sandbox Code Playgroud)

回来

Article with id = 5
Article with id = 9
Run Code Online (Sandbox Code Playgroud)

更新:更具体地说,我想避免篡改括号中的数据WHERE articles.id IN (4, 2, 5, 9, 3),因为这些ID是动态的并且是自动排序的.

mysql sql-order-by in-clause

8
推荐指数
2
解决办法
1万
查看次数

使用Entity框架的sql IN子句的动态linq查询表达式树

我想为EF 6.0中的sql IN子句创建一个动态linq表达式,代码为第一个approch.请注意,我是Expressions的新手.我想要的是

select * from Courses where CourseId in (1, 2, 3, 4)
//CourseId is integer
Run Code Online (Sandbox Code Playgroud)

正常的linq查询看起来像这样.但我想动态查询它

string[] ids = new string[]{"1", "2", "3", "4"};
var courselist = DBEntities.Courses.Where(c => ids.Contains(SqlFunctions.StringConvert((decimal?)c.CourseId)))
Run Code Online (Sandbox Code Playgroud)

有两种方法可以进行动态表达.
1)一种方法是遍历id并创建表达式
下面的代码将在调试视图中创建以下表达式

{f => ((StringConvert(Convert(f.CourseId)).Equals("23") Or StringConvert(Convert(f.CourseId)).Equals("2")) Or StringConvert(Convert(f.CourseId)).Equals("1"))}
Run Code Online (Sandbox Code Playgroud)

动态表达是

var param = Expression.Parameters(typeof(Course), "f")
MemberExpression property = Expression.PropertyOrField(param, "CourseId");                   
MethodInfo mi = null;
MethodCallExpression mce = null;
if (property.Type == typeof(int))
{
   var castProperty = Expression.Convert(property, typeof(double?));
   var t = Expression.Parameter(typeof(SqlFunctions), "SqlFunctions");
   mi = typeof(SqlFunctions).GetMethod("StringConvert", new …
Run Code Online (Sandbox Code Playgroud)

c# linq expression dynamic in-clause

8
推荐指数
1
解决办法
5606
查看次数