MYSQL 查询的不同结果

标签 mysql

我想做的是使用 MYSQL 查询获取不同的结果:

    $sql = "SELECT un.*, co.order_product_quantity AS product_num, cu.first_name, cu.surname, cp.product_name, cp.product_thumbnail AS prod_img, co.order_goods_cost, co.order_delivery_cost, co.order_status as status
        FROM (
            SELECT DISTINCT order_unique_id AS o_id, order_date
            FROM cbs_orders
            GROUP BY order_unique_id
        ) un
            INNER JOIN cbs_orders co ON co.order_unique_id = un.o_id
            INNER JOIN cbs_users cu ON cu.id = co.order_user_id
            INNER JOIN cbs_products cp ON cp.product_id = co.order_product_id
        ORDER BY un.order_date DESC LIMIT $start_from, $num_rec_per_page ";

我希望从查询中获取 DISTINCT order_unique_id,我最初从未编写过查询,我认为添加“SELECT DISTINCT order_unique_id”可以解决问题,但它仍然会带回重复的 id。

为任何帮助者干杯

格雷厄姆

最佳答案

您想要正确利用GROUP BY;在这种情况下,DISTINCT 对您没有帮助。另外,我很确定不需要子选择。

试试这个

 $sql = "SELECT un.order_unique_id AS o_id, un.order_date,
 co.order_product_quantity AS product_num, 
 cu.first_name, cu.surname, cp.product_name, 
 cp.product_thumbnail AS prod_img, co.order_goods_cost, 
 co.order_delivery_cost, co.order_status as status
   FROM cbs_orders AS un
   INNER JOIN cbs_orders co ON co.order_unique_id = un.o_id
   INNER JOIN cbs_users cu ON cu.id = co.order_user_id
   INNER JOIN cbs_products cp ON cp.product_id = co.order_product_id
     GROUP BY un.order_unique_id
     ORDER BY un.order_date DESC 
     LIMIT $start_from, $num_rec_per_page ";

这可能会产生奇怪的结果,因为您没有应用 aggregate functions到其他列。您可能需要使用它们来获得所需的结果。

关于MYSQL 查询的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222763/

相关文章:

php - 通过数据库列的选择器收集和输出数据

php - 在 MySQL + PDO 中显示警告

mysql - 结果介于两者之间并在选择中计数

PHP处理数据并创建数组

mysql - 连接两个表,日期间隔为前 3 天和后 3 天

mysql - 从具有相同外键的所有行中具有最高 ID 的表中选择所有行

点击页面其他类别后 PHP session 变量丢失

php - 相当于 PHP 中的 mysql CURRENT_DATE() 函数

php - Laravel Eloquent - 日期属性未作为 Carbon 对象检索

php - 跟踪每个用户未读消息的最有效方法