Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL复杂查询中带限制的子查询_Mysql_Join_Subquery_Limit - Fatal编程技术网

MYSQL复杂查询中带限制的子查询

MYSQL复杂查询中带限制的子查询,mysql,join,subquery,limit,Mysql,Join,Subquery,Limit,我正在使用的Mysql版本不允许我在子查询中使用限制,因此我可以加快查询速度。如何在下一个查询中使用联接 SELECT p . * , ( SELECT AVG( review_rating ) AS rating_total FROM reviews r WHERE r.review_item_ref = p.pattern_ref AND r.review_state =1 GROUP BY r.review_item_ref ) AS review_rating FROM pattern

我正在使用的Mysql版本不允许我在子查询中使用限制,因此我可以加快查询速度。如何在下一个查询中使用联接

SELECT p . * , (

SELECT AVG( review_rating ) AS rating_total
FROM reviews r
WHERE r.review_item_ref = p.pattern_ref
AND r.review_state =1
GROUP BY r.review_item_ref
) AS review_rating
FROM patterns p
WHERE pattern_active >=0
AND p.pattern_family =27
AND p.pattern_ref
IN (

SELECT item_pattern_ref
FROM items
WHERE item_pattern_ref = p.pattern_ref LIMIT 1
)
GROUP BY p.pattern_id
ORDER BY p.pattern_description ASC , LCASE( p.pattern_description ) ASC
LIMIT 0 , 16

看起来您正在尝试验证p.pattern_ref在项目中是否匹配,对吗

如果是,

SELECT 
    p . *,
    (SELECT AVG( review_rating ) AS rating_total
        FROM reviews r
        WHERE r.review_item_ref = p.pattern_ref
            AND r.review_state =1
        GROUP BY r.review_item_ref
    ) AS review_rating
FROM patterns p
INNER JOIN items i ON p.pattern_ref = i.item_pattern_ref
WHERE p.pattern_active >= 0
    AND p.pattern_family = 27
GROUP BY p.pattern_id
ORDER BY p.pattern_description ASC , LCASE( p.pattern_description ) ASC
LIMIT 0 , 16

应该有用。内部联接将只返回两边都匹配的行。

您不能在子查询中使用LIMIT。

请考虑发布相关的DDL、示例数据和所需的输出。谢谢您的评论。布兰得到了我所需要的,所以现在不需要扩展我的Q。谢谢你能告诉我为什么我的查询没有限制1需要26英寸,而你的查询只有0.008英寸吗?不客气。我很确定IN语句比internaljoin语句慢。如果您愿意,您可以尝试解释: