标签: sql-in

按IN值列表排序

我在PostgreSQL 8.3中有一个简单的SQL查询,可以获取一堆注释.我在子句中为构造提供了一个值的排序列表:INWHERE

SELECT * FROM comments WHERE (comments.id IN (1,3,2,4));
Run Code Online (Sandbox Code Playgroud)

这将以任意顺序返回注释,在我碰巧是ids之类的1,2,3,4.

我希望结果行像IN构造中的列表一样排序:(1,3,2,4).
怎么实现呢?

sql postgresql sql-order-by sql-in

146
推荐指数
7
解决办法
9万
查看次数

SQL Server IN与EXISTS性能

我很好奇以下哪一项会更有效率?
我一直对使用有点谨慎,IN因为我相信SQL Server会将结果集转化为一个大的IF声明.对于大的结果集,这可能导致性能不佳.对于小结果集,我不确定是否更可取.对于大型结果集,EXISTS效率会不会更高?

WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
Run Code Online (Sandbox Code Playgroud)

WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 exists query-performance sql-in

112
推荐指数
5
解决办法
13万
查看次数

PostgreSQL中的IN vs ANY运算符

PostgreSQL中INANY运算符有什么区别?
两者的工作机制似乎是一样的.任何人都能用一个例子来解释这个吗

sql database postgresql rdbms sql-in

83
推荐指数
2
解决办法
7万
查看次数

MySQL IN语句的PDO绑定值

我有一个PDO的问题,我很想在被它困扰很长一段时间后得到答案.

举个例子:

我将一个ID数组绑定到PDO语句,以便在MySQL IN语句中使用.

该数组将是:$ values = array(1,2,3,4,5,6,7,8);

数据库安全变量是$ products = implode(','$ values);

因此,$ products将成为STRING,其值为:'1,2,3,4,5,6,7,8'

声明如下:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (:products)
Run Code Online (Sandbox Code Playgroud)

当然,$产品将被声明为:产品.

但是,当编译语句并绑定值时,它实际上看起来像这样:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN ('1,2,3,4,5,6,7,8')
Run Code Online (Sandbox Code Playgroud)

问题是它将IN语句内部的所有内容作为单个字符串执行,因为我已将其准备为逗号分隔值以绑定到语句.

我真正需要的是:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (1,2,3,4,5,6,7,8)
Run Code Online (Sandbox Code Playgroud)

我实际上可以实现这一点的唯一方法是将值放在字符串本身而不绑定它们,但我知道必须有一种更简单的方法来执行此操作.

php mysql pdo sql-in

71
推荐指数
4
解决办法
5万
查看次数

将一个充满逗号分隔值的varchar传递给SQL Server IN函数

使用Like和In 复制
动态SQL逗号分隔值查询
参数化查询

我有一个SQL Server存储过程,我想将一个varchar逗号分隔的值传递给一个IN函数.例如:

DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';

SELECT * 
FROM sometable 
WHERE tableid IN (@Ids);
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.我收到错误:

将varchar值'1,2,3,5,4,6,7,98,234'转换为数据类型int时转换失败.

如何在不诉诸构建动态SQL的情况下完成此任务(或相对类似的东西)?

sql t-sql sql-server sql-in

53
推荐指数
9
解决办法
17万
查看次数

房间 - 选择IN状态的查询?

是否可以在INRoom中使用SQLite的条件?

我正在尝试从我的数据库中选择一个项目列表,其中某列的值(在本例中为TEXT列)与一组过滤器值中的任何一个匹配.根据我的知识,这很容易在SQL和SQLite中完成,只需INSELECT语句中添加一个条件(参见此处).但是,我似乎无法使它与Room合作.

我一直收到这个错误:

Error:(70, 25) error: no viable alternative at input 'SELECT * FROM Table WHERE column IN :filterValues'
Run Code Online (Sandbox Code Playgroud)

(@Query调用DAO 注释方法的输入filterValues)

我现在尝试了三种不同的方法:

  1. 将论证作为一个 List<String>
  2. 将论证作为一个 String[]
  3. 最后将参数简单地传递给了String,但格式化为(value_1, value_2, ..., value_n)

特别是最后一个应该可以很容易地工作,因为它将(或者至少应该)直接转换为SELECT * FROM Table WHERE column IN (value_1, value_2, ..., value_n),SELECT如果您只是直接访问数据库,这就是您手动写出的确切方式.

sqlite select android sql-in android-room

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

postgreSQL - in vs any

我试过了两个

1)smthng = any(从exmplTable中选择id)

2)smthng in(从exmplTable中选择id)

我的数据得到了相同的结果.

这两个表达有什么不同吗?

postgresql operation any sql-in

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

如何在mysqli预处理语句中使用IN子句

我正在使用预处理语句将一些旧代码移动到新的msqli接口,我在使用包含IN子句的SQL语句时遇到问题.我通常会这样做:

$ids = '123,535,345,567,878'
$sql = "SELECT * FROM table WHERE id IN ($ids)";
$res = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)

将其转换为mysqli和预处理语句我尝试了许多解决方案:

$ids = '123,535,345,567,878'
$ids = implode($ids,',');
$result = $msqli->prepare("SELECT foo,blar FROM table WHERE id IN (?));
$result->bind_param("i", $ids);
$result->execute();
Run Code Online (Sandbox Code Playgroud)

上面的操作失败并计算了数组中的元素数量并改变了SQL字符串中的问号数量,并且对数组中的每个元素调用bind_parm也失败了.仅使用逗号分隔的字符串也会失败.

我在谷歌上找不到好的文档,你怎么解决这个问题?

php mysqli sql-in

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

在本机sql查询中使用IN子句

我们正在尝试为本机sql查询动态生成IN子句以返回JPA实体.Hibernate是我们的JPA提供者.我们的代码看起来像这样.

@NamedQuery(
    name="fooQuery",
    queryString="select f from Foo f where f.status in (?1)"
)

....

Query q = entityManager.createNamedQuery("fooQuery");
q.setParameter(1, "('NEW','OLD')");
return q.getResultList();
Run Code Online (Sandbox Code Playgroud)

这不起作用,in子句不识别通过这种方式传递的任何值.有谁知道这个问题的解决方案?

sql hibernate jpa in-operator sql-in

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

在Hibernate 3.2.2的本机sql查询中使用IN子句

以类似于此处发现的问题的方式:在本机sql查询中使用IN子句 ; 我试图IN()通过Hibernate中的本机SQL查询来使用子句.虽然另一个问题的作者能够使用JPA,但我不是.另外,我坚持使用版本3.2.2.

似乎Hibernate本身不支持,IN()因为它在应用查询参数时试图将我的ID列表(长基元数组)转换为二进制形式:query.setParameter("publisherGroups", [1243536264532,1243536264533,1243536264535]);

来自Hibernate:

SELECT sum(C2CReportedConversion) as c2CConversion, sum(C2CReportedRevenue) as c2CRevenue, sum(I2CReportedConversion) as i2CConversion, sum(I2CReportedRevenue) as i2CRevenue, sum(Clicks) as clicks, sum(Impressions) as impressions, sum(Requests) as requests, sum(Views) as views, coalesce(Name, DisplayName) FROM UiTemplateReportingCache JOIN AdUnit USING (AdUnitId) WHERE PublisherId = ? AND PublisherGroupId IN ( ? ) AND Date >= ? AND Date <= ? GROUP BY coalesce(Name, DisplayName)

从mysql日志:

SELECT sum(C2CReportedConversion) as c2CConversion, sum(C2CReportedRevenue) as c2CRevenue, sum(I2CReportedConversion) as i2CConversion, sum(I2CReportedRevenue) as …

sql hibernate in-operator sql-in

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