Php 如何使用GROUPBY子句选择最高匹配的单个值
第一张表:wp_pc_产品Php 如何使用GROUPBY子句选择最高匹配的单个值,php,mysql,join,Php,Mysql,Join,第一张表:wp_pc_产品 feed_product_name feed_product_image price deeplink id_merchant sony xperia c3 abc.png 12000 abc.html fkt sony xperia xyz.png 11000 aaa.html snd sony xperia M pqr.png
feed_product_name feed_product_image price deeplink id_merchant
sony xperia c3 abc.png 12000 abc.html fkt
sony xperia xyz.png 11000 aaa.html snd
sony xperia M pqr.png 10000 bbb.html fkt
sony xperia z abc.png 12000 abc.html fkt
sony xperia z3 xyz.png 11000 aaa.html snd
sony xperia k pqr.png 10000 bbb.html fkt
第二张表:wp_pc_产品_商家
slug image
fkt logo1.png
snd logo2.png
我现有的查询
SELECT p.feed_product_name,
p.feed_product_image,
p.price,
p.deeplink,
p.id_merchant,
m.image
FROM wp_pc_products p
JOIN wp_pc_products_merchants m ON m.slug=p.id_merchant
AND (feed_product_name LIKE'%sony%'
OR feed_product_name LIKE'%xperia%'
OR feed_product_name LIKE'%c3%')
AND price BETWEEN "11829.3" AND "21968.7"
GROUP BY id_merchant
上述查询不适用于GROUPBY子句。
如何在上述查询中使用group by将您的查询更改为
select distinct(m.image),p.feed_product_name,p.feed_product_image,p.price,p.deeplink from wp_pc_products p JOIN wp_pc_products_merchants m ON m.slug=p.id_merchant and (p.feed_product_name like'%sony%' or p.feed_product_name like'%xperia%' or p.feed_product_name like'%c3%' ) and p.price BETWEEN "11829.3" and "21968.7" group by p.id_merchant
或
您几乎应该总是按照您希望返回的任何和所有值进行分组,除了max或grest之类的值。此外,为了获得最高的单个值,您需要将列包装为max。使用GROUP BY无法获得所需的结果。查看您的查询和数据。对于id_merchant='fkt',feed_product_name至少有两个不同的值。对于id为'fkt'的组,MySQL应该在查询中选择哪一个?这样的查询甚至不是有效的SQL。MySQL直到版本5.7.5,并选择其中一个值。它不能保证查询将始终为p.feed\u product\u name返回相同的值。我以前使用过此查询=>选择wp\u pc\u products.*,wp\u pc\u products\u merchants.image,cashback.percentage FROM wp_pc_products JOIN wp_pc_products.id_merchant=wp_pc_products_merchants.slug JOIN cashback ON wp_pc_products.shipping=cashback.category_name和wp_pc_products.id_merchant=cashback.mert,其中feed_product_名称为“%sony%”,feed_产品名称为“%xperia%”,feed_产品名称为“%xperia%”和feed_产品名称为就像id_merchantit的“%c3%”组一样,它对我来说工作得很好。以类似的方式,我想从一个商家那里得到一个产品。这个查询是按照位置的顺序查找匹配项,比如第一个词,然后第二个词,依此类推。现在我们将其修改为随机匹配,这是唯一的区别。忘记上面我编辑的查询中的distinctm.image,然后建议我最好的一个。我也尝试了以上两个问题,你建议我认为第二个是最好的,这不是我预期的结果。我在wp_pc_product表中有id_merchant列,它重复了merchant的名称,在wp_pc_product_merchant表中有slug列,其中merchant name出现,这是我在这两个表中唯一的关系。我希望每个商户都有一个结果。为什么“-1”可以解释一下吗?
select distinct(m.image),p.feed_product_name,p.feed_product_image,p.price,p.deeplink from wp_pc_products p JOIN wp_pc_products_merchants m ON m.slug=p.id_merchant where (p.feed_product_name like'%sony%' or p.feed_product_name like'%xperia%' or p.feed_product_name like'%c3%' ) and p.price BETWEEN "11829.3" and "21968.7" group by p.id_merchant