数组中的Mysql为数组中的每个元素选择具有特定属性的属性?

鲍比

我正在尝试优化我的代码,但我不太清楚我正在尝试的方法是否可行,或者我应该检查一下其他的东西,我希望你能帮我一下。

所以基本上我有一个与此类似的 Mysql 选择:

SELECT COUNT(*) as book_orders 
FROM book_sales 
WHERE book_number = ? 
AND purchase_date > ? (timestamp)

我有一个包含 bookNumbers 和匹配 pruchaseDates 的列表,现在,我正在为每个数字发送一个 Select,这听起来没有必要,因为理论上,可以创建一个列表并使用 1 个选择完成所有这些。

SELECT COUNT(*) 
FROM book_sales 
WHERE book_number IN (1,2,3,4) 
AND purchase_date > ? 
GROUP BY book_number

设置purchase_date后,它将根据purchase_date过滤所有book_sales,但我想将列表中的每个元素过滤到特定日期,如下所示:

book_number => 1 purchase_date => 1412
book_number => 2 purchase_date => 1621
book_number => 3 purchase_date => 1014
book_number => 4 purchase_date => 1978

我尝试了一个像所示的子查询,但它太低,无法处理太多数据

SELECT * FROM 
    (SELECT * FROM book_sales WHERE book_number = 1 AND purchase_date > 1412) AS bk1,
    ....
    ...
他们不是

将您的条件对保存到 temptable 并加入它:

CREATE TEMPORARY TABLE tmp (  book_number INT 
                            , purchase_date INT
         -- define PK only if the amount of pairs is over 10 - it can improve
         --                 , PRIMARY KEY (book_number, purchase_date)
                           ) ENGINE = Memory
SELECT 1 book_number, 1412 purchase_date UNION ALL
SELECT 2, 1621
SELECT 3, 1014
SELECT 4, 1978;

进而

SELECT COUNT(*) 
FROM book_sales
JOIN tmp ON book_sales.book_number = tmp.book_number
        AND book_sales.purchase_date > tmp.purchase_date;

或者,如果 MySQL 版本允许,则使用 CTE 执行相同操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在具有特定属性的数组中搜索

从Java列表中仅选择具有特定属性的元素

通过具有类似数组的属性的属性选择dom元素

从表中选择,其中jsonb数组具有具有特定属性的元素

从数组中删除具有相同属性值的元素

从javascript数组中过滤具有特定属性的对象

jQuery:选择具有不同特定属性的每个元素

从对象数组中仅选择特定属性

如何将具有每个元素数组的对象列表转换为以子元素为属性的对象数组

mongo:数组中特定元素的更新属性

比较两个对象数组,其中每个数组中的对象具有不同的属性

Julia中具有属性的数组

如何使用Spring JUnit集成测试检查数组中的每个对象是否具有特定属性?

在具有特定属性的数组中的其他对象之前插入数组中的对象

获取具有特定href属性的元素数组

为数组中的每个 JavaScript 对象查找为 null 的属性

在对象数组中查找具有相同属性的元素并创建新的对象数组

PHP 从具有不同数组计数的对象数组中获取特定属性

如何通过使用NSPredicate在数组的数组中查找具有特定属性的对象?

在C#中解析gml文件时,如何选择具有特定属性的特定元素?

当元素的属性为空时删除多维数组中的元素

向数组中的每个元素添加属性/索引

更改v-for数组中每个元素的属性

观察对象数组中每个对象的特定属性-角材料

在javascript中从具有不同属性的2个数组中获取不同的元素

ReactJS警告:数组或迭代器中的每个子代都应具有唯一的“键”属性

从数组获取具有max属性的元素

显示数组中的特定属性

检查数组中的每个元素是否具有相同的值