gpt4 book ai didi

php - 执行此 SQL 查询的更快方法

转载 作者:行者123 更新时间:2023-11-29 06:29:17 25 4
gpt4 key购买 nike

我有一个大型 SQL 表,用于存储用户添加到他们的个人资料中的附加项目 ID 以及他们给它的评分。问题是,我需要快速计算一个项目被添加了多少次,还需要获得它给出的总评分。有时,评级可能为空,也可能不为空,具体取决于用户是否为该项目留下了评级。表格看起来像这样

Item_Feedback_ID (Pri, AI)  Item ID    Item Rating    User_ID_Added
1 5 Null 4
2 5 8 5
3 6 9 9

我需要为存在的每个唯一项目 ID 执行此操作(我已经有一个存储唯一项目 ID 的表)。我现在正在做的是:

PSEUDO PHP CODE:
$result = the result of: "SELECT item_id FROM items";
foreach ($item_id in $result) {
$sql = "SELECT COUNT(item_id) as sum, SUM(`Item Rating`) as total_rating FROM
item_feedback WHERE item_id = $item_id";
//Run that sql statement in PHP and parse it and save in an array
}

有没有更有效的方法?似乎我浪费了很多时间,因为 COUNT 已经扫描了所有列,我必须再次为 x 个项目 ID 执行此操作。

最佳答案

您应该能够使用可选数据的子查询来完成这一查询。我正在为额外数据使用 LEFT JOIN,这样仍然会返回没有该数据的项目。子查询的原因是因为您正在使用 COUNT。如果没有子查询,那将计算所有记录,而不仅仅是有反馈的记录。

SELECT 
items.item_id,
feedback.sum,
feedback.total_rating
FROM items
LEFT JOIN(
SELECT
item_id,
COUNT(item_id) as sum,
SUM(`Item Rating`) as total_rating
FROM item_feedback
GROUP BY item_id
) AS feedback ON feedback.item_id = items.item_id

关于php - 执行此 SQL 查询的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com