【发布时间】:2012-04-04 23:47:18
【问题描述】:
我有一个问题。
我这里有两张桌子
表 1:产品
product_id , name , images_sideview
表 2:产品描述
product_id , volgnr
我想用表 2 和 volgnr 字段中的数字对它们进行排序。
有没有办法用 mysql 做到这一点?
【问题讨论】:
标签: php mysql sorting tablesorter
我有一个问题。
我这里有两张桌子
表 1:产品
product_id , name , images_sideview
表 2:产品描述
product_id , volgnr
我想用表 2 和 volgnr 字段中的数字对它们进行排序。
有没有办法用 mysql 做到这一点?
【问题讨论】:
标签: php mysql sorting tablesorter
有两种排序方式。升序和降序。你没有提到订单。因此,我为您提供两种答案:
升序:
SELECT DISTINCT table1.*
FROM table1
INNER JOIN table2 ON table1.product_id = table2.product_id
GROUP BY table1.product_id
ORDER BY table2.product_id ASC, table2.volgnr ASC;
降序:
SELECT DISTINCT table1.*
FROM table1
INNER JOIN table2 ON table1.product_id = table2.product_id
GROUP BY table1.product_id
ORDER BY table2.product_id DESC, table2.volgnr DESC;
如果你想告诉 MySQL 先排序 FIRST 按 volgnr 然后按 product_id:
升序:
SELECT DISTINCT table1.*
FROM table1
INNER JOIN table2 ON table1.product_id = table2.product_id
GROUP BY table1.product_id
ORDER BY table2.volgnr ASC, table2.product_id ASC;
降序:
SELECT DISTINCT table1.*
FROM table1
INNER JOIN table2 ON table1.product_id = table2.product_id
GROUP BY table1.product_id
ORDER BY table2.volgnr DESC, table2.product_id DESC;
希望对您有所帮助。
编辑 1:
我现在已经编辑了查询,以便它不会在结果中为您提供重复项。试试看,让我知道结果如何。
编辑 2: 添加了 Group By 子句。试试这个。
【讨论】:
select *
from products t1
inner join product_descriptions t2 on t1.product_id = t2.product_id
order by t2.volgnr
【讨论】:
SELECT * 中重复的列名不要出错。 MySQL 不需要区分它们,因为你没有对它们做任何事情。
SELECT p.'product_id', p.'name', p.'images_sideview'
FROM products p
LEFT JOIN product_descriptions d ON p.product_id = d.product_id
ORDER BY d.volgnr;
【讨论】: