gpt4 book ai didi

mysql - SQL RAND查询选择所有记录并且不使用联接表

转载 作者:行者123 更新时间:2023-11-30 00:19:40 26 4
gpt4 key购买 nike

请有人通过我正在开发的网站继承的查询与我交谈。

该查询基于类别编号56返回5个产品的随机组。查询存在问题,因为它不限制基于Web和产品归档条件下的产品选择。

AND p.product_OnWeb = 1
AND p.product_Archive = 0


查询中的上述行未得到遵守。而是,查询将包括所有产品,即使它们被标记为 p.product_Archive=1(已存档)和 p.product_OnWeb = 0(不在线)

如果有人指出我需要在哪里进行更改,我将不胜感激。

完整查询为:

SELECT c.prdt_cat_rel_Product_ID,
ROUND(RAND() * x.m_id) 'rand_ind'
FROM tbl_prdtcat_rel c,
tbl_products p,
(SELECT MAX(t.prdt_cat_rel_Cat_ID) 'm_id'
FROM tbl_prdtcat_rel t) x
WHERE c.prdt_cat_rel_Cat_ID = 56
AND p.product_OnWeb = 1
AND p.product_Archive = 0
ORDER BY rand_ind
LIMIT 3


谢谢

最佳答案

首先,为了简化操作,将查询转换为较新的联接语法

 SELECT c.prdt_cat_rel_Product_ID,    ROUND(RAND() * x.m_id) 'rand_ind'
FROM tbl_prdtcat_rel c,
JOIN tbl_products p ON p.??? = c.???
JOIN (
SELECT MAX(t.prdt_cat_rel_Cat_ID) 'm_id' FROM tbl_prdtcat_rel t
) x ON 1=1
WHERE c.prdt_cat_rel_Cat_ID = 56
AND p.product_OnWeb = 1
AND p.product_Archive = 0
ORDER BY rand_ind
LIMIT 3


您可以看到查询不知道如何从基于C的P中选择匹配记录,因此它可以将它们全部捕获。。您需要指定如何将tbl_prdtcat记录与tbl_product记录进行匹配(用适当的字段)

我猜p中的每个产品都有某种字段指示它属于哪个类别,使用此字段进行匹配,您的查询应该可以工作...

关于mysql - SQL RAND查询选择所有记录并且不使用联接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335083/

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