我想做的是使用 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/