如果您想了解具有“WHERE…IN”查询的PDO和sql查询where的使用的知识,那么本篇文章将是您的不二之选。我们将深入剖析具有“WHERE…IN”查询的PDO的各个方面,并为您解答sql查询wh
如果您想了解具有“ WHERE…IN”查询的PDO和sql查询where的使用的知识,那么本篇文章将是您的不二之选。我们将深入剖析具有“ WHERE…IN”查询的PDO的各个方面,并为您解答sql查询where的使用的疑在这篇文章中,我们将为您介绍具有“ WHERE…IN”查询的PDO的相关知识,同时也会详细的解释sql查询where的使用的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 具有“ WHERE…IN”查询的PDO(sql查询where的使用)
- c# – Dapper.net“where … in”查询不适用于PostgreSQL
- c# – 在DocumentDB中是否可以像在Sql Server中一样查询“Where In”?
- Firestore 多个带有“and”逻辑的“in”查询,查询结构
- MySQL“ IN”查询使用子查询的速度非常慢,但是使用显式值的速度非常快
具有“ WHERE…IN”查询的PDO(sql查询where的使用)
我正在重新编写一些PHP代码以使用PDO进行数据库访问,但是我遇到了“ WHERE … IN”查询问题。
我正在尝试根据检查表单上的哪些项目从数据库中删除某些内容。列表的长度和内容将有所不同,但是对于此示例,请想象是这样的:
$idlist = ''260,201,221,216,217,169,210,212,213'';
然后查询如下所示:
$query = "DELETE from `foo` WHERE `id` IN (:idlist)";$st = $db->prepare($query);$st->execute(array('':idlist'' => $idlist));
当我这样做时,仅第一个ID被删除。(我认为它会抛出逗号及其后的所有内容。)
我也尝试过制作$idlist
一个数组,但是它不会删除任何东西。
在PDO准备好的语句中使用项目列表的正确方法是什么?
答案1
小编典典由于您无法将值(数字)与控制流逻辑(逗号)与准备好的语句混合使用,因此每个值需要一个占位符。
$idlist = array(''260'',''201'',''221'',''216'',''217'',''169'',''210'',''212'',''213'');$questionmarks = str_repeat("?,", count($idlist)-1) . "?";$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
然后循环绑定参数。
c# – Dapper.net“where … in”查询不适用于PostgreSQL
”.
connection.Query<CarStatsProjection>( @"select manufacturer,model,year,AVG(price) as averageprice,AVG(miles) as averagemiles,COUNT(*) as count from products where manufacturer IN @manufacturers AND model IN @models AND year IN @years group by manufacturer,year",new { manufacturers = new[] { "BMW","AUDI" },models = new[] { "M4","A3" },years = new[] { 2016,2015 } });
我通过在下面创建一个方法并在内部调用它来构建SQL查询来解决这个问题.想知道Dapper是否可以使用对象参数来处理这个问题吗?
public static string ToInsql(this IEnumerable<object> values) { var flattened = values.Select(x => $"'{x}'"); var flatString = string.Join(",",flattened); return $"({flatString})"; }
解决方法
SELECT manufacturer,COUNT(*) as count FROM products WHERE manufacturer = ANY(@manufacturers) AND model = ANY(@models) AND year = ANY(@years) GROUP BY manufacturer,year
c# – 在DocumentDB中是否可以像在Sql Server中一样查询“Where In”?
SELECT * FROM root.DocumentDbTest_AllFieldTypes f WHERE f.field1 NOT IN ( SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g WHERE g.time = "09:12:34" );
我收到以下错误:
有人可以告诉我正确的语法也许这样做IN查询?
解决方法
换句话说……这是支持的:
SELECT food.id,food.description,food.tags,food.foodGroup,food.version FROM food WHERE food.foodGroup IN ("Poultry Products","Sausages and Luncheon Meats")
这不受支持:
SELECT * FROM root.DocumentDbTest_AllFieldTypes f WHERE f.field1 NOT IN ( SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g WHERE g.time = "09:12:34" );
如果您想在DocumentDB中查看子选择,请在DocumentDB’s feedback page上投票支持此功能.
Firestore 多个带有“and”逻辑的“in”查询,查询结构
这是另一种选择:复合值
假设我们有三个制造商,每个制造商都有多种颜色
Manufacturer A
Manufacturer B
Manufacturer C
然后是三种颜色
Red
White
Blue
如果我们将数据存储在 Firestore 中的制造商和颜色等标准字段中,然后利用复合字段,则可以更轻松地执行多个 Or 查询
garment_0
manufacturer: "Manufacturer A"
color: "Red"
compound: "A_R" //manufacture A,Red
garment_1
manufacturer: "Manufacturer A"
color: "White"
compound: "A_W"
garment_2
manufacturer: "Manufacturer B"
color: "Blue"
compound: "B_B"
garment_3
manufacturer: "Manufacturer B"
color: "White"
compound: "B_W"
假设用户想要制造商 A 和 B 的所有白色或蓝色服装
garmentsRef.whereField("compound",in: ["A_W","A_B","B_W","B_B"])
将退回服装_1(制造商 A,白色)、服装_2(制造商 B,蓝色)和服装_3(制造商 B,白色)
MySQL“ IN”查询使用子查询的速度非常慢,但是使用显式值的速度非常快
我有一个MySQL查询(Ubu 10.04,Innodb,Core i7、16Gb RAM,SSD驱动器,优化的MySQL参数):
SELECT
COUNT(DISTINCT subscriberid)
FROM
em_link_data
WHERE
linkid in (SELECT l.id FROM em_link l WHERE l.campaignid = '2900' AND l.link != 'open')
表em_link_data有大约700万行,em_link有数千行。此查询大约需要 18秒 才能完成。但是,如果我替换子查询的结果并执行以下操作:
SELECT
COUNT(DISTINCT subscriberid)
FROM
em_link_data
WHERE
linkid in (24899,24900,24901,24902);
那么查询将在不到1毫秒的时间内运行。仅子查询在不到1毫秒的时间内运行,因此索引了列linkid。
如果我将查询重写为联接,则还不到1ms。为什么“
IN”查询中的子查询这么慢,为什么其中包含值的这么快?我无法重写查询(购买的软件),因此希望进行一些调整或提示以加快查询速度!任何帮助表示赞赏。
今天的关于具有“ WHERE…IN”查询的PDO和sql查询where的使用的分享已经结束,谢谢您的关注,如果想了解更多关于c# – Dapper.net“where … in”查询不适用于PostgreSQL、c# – 在DocumentDB中是否可以像在Sql Server中一样查询“Where In”?、Firestore 多个带有“and”逻辑的“in”查询,查询结构、MySQL“ IN”查询使用子查询的速度非常慢,但是使用显式值的速度非常快的相关知识,请在本站进行查询。
本文标签: