MySQL 查询每次显示的结果不一致

标签 mysql

SELECT DISTINCT pv.product_variation_key,
                p.product_key,
                p.brand_key,
                p.name,
                p.vehicle_type,
                p.short_description,
                pp.medium_image,
                b.brand_name,
                b.big_image,
                ts.tire_size,
                pv.sku,
                pv.price,
                pv.dealer_price,
                pv.retail_price,
                pv.weight,
                pv.width,
                pv.performance_rating,
                pv.mileage_warranty,
                pv.overall_diameter,
                pv.tread_depth,
                pv.maximum_psi,
                vte.road_hazard,
                vte.road_hazard_price,
                vte.load_index,
                vte.sidewall,
                vte.UTQG,
                vte.load_ply_rating,
                vte.load_range,
                tsr.tire_speed_rating,
                cr.rating,
                IF(pv.sku != i.sku,'true','false'),
                ROUND((((acos(sin((41.3309413*pi()/180)) * sin((sc.latitude*pi()/180)) + cos((41.3309413*pi()/180)) * cos((sc.latitude*pi()/180)) * cos((abs(-75.7429636 - sc.longitude)*pi()/180))))*180/pi())*60*1.1515) , 1) AS distance
FROM (products p,
      product_variations pv,
      brands b,
      tire_sizes ts,
      variation_tire_size_applications vts,
      variation_tire_extradatas vte,
      inventorys i,
      supply_chain_centers sc)
LEFT JOIN customer_reviews cr ON cr.product_key = p.product_key
AND cr.is_approved = 'yes'
LEFT JOIN variation_tire_speed_rating_applications vtsra ON vtsra.product_variation_key = pv.product_variation_key
LEFT JOIN tire_speed_ratings tsr ON vtsra.tire_speed_rating_key = tsr.tire_speed_rating_key
LEFT JOIN product_photos pp ON p.product_key = pp.product_key
AND pp.photo_type= 'default image'
WHERE pv.product_key = p.product_key
  AND p.status = 'active'
  AND b.brand_key = p.brand_key
  AND pv.product_variation_key = vts.product_variation_key
  AND ts.tire_size_key = vts.tire_size_key
  AND pv.product_variation_key = vte.product_variation_key
  AND i.supply_chain_center_key = sc.supply_chain_center_key
  AND i.brand_key = p.brand_key
  AND sc.status = 'Active'
  AND pv.sku=i.sku
  AND i.current_stock > 0
  AND (p.name LIKE '%win%'
       OR pv.variation_name LIKE '%win%'
       OR p.product_type LIKE '%win%'
       OR b.brand_name LIKE '%win%'
       OR LCASE(pv.sku) LIKE '%win%')
GROUP BY pv.product_variation_key
HAVING (distance <= 1000)
ORDER BY pv.retail_price ASC,
         cr.rating DESC,
         p.name ASC

我遇到了 MySQL 查询的问题,它每次在 phpmyadmin 中都显示不一致的结果,我认为这个问题是由于纬度和经度而发生的。请帮我解决这个问题。

最佳答案

使用GROUP BY时的简单规则:

Every column in the SELECT clause must be in the GROUP BY clause or an aggregate function must be applied to it!

如果不是这种情况,则会显示每组中的随机行。据我所知,MySQL 是唯一允许这样做的 DBMS,但永远记住,这是错误的。您还可以通过设置 ONLY_FULL_GROUP_BY SQL mode 来禁用此功能。 .

关于MySQL 查询每次显示的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189072/

相关文章:

mysql - 如何在sql中查找 "dirty'状态床和 "Completed"状态床之间的时间差

mysql - 数据库问题 - 如何设置用户帐户/密码,以便他们只能添加/更改他们的数据?

mysql - 根据列的总和计算加类时间

php - 将 PHP mySQL 查询输出到下拉列表中

PHP/mySQL INSERT NULL 如果变量为空

php - 论坛,获取最后的帖子/主题

mysql - 创建表架构错误 - 不确定为什么会出现架构错误

php - 在弹性beanstalk AWS中部署应用程序

php - 是否可以在没有 PHP 的情况下与 MySQL 数据库交互

php - UTF-8贯穿始终