我有一个产品表,我需要编写一个SQL查询,根据他们的制造商按字母顺序排序这些产品。
即。
SELECT * FROM ProductsTable ORDER BY Manufacturer
但复杂的是我们正在努力推广一个特定的制造商。因此,该制造商的所有产品都需要排在最前面,而不是其他产品的字母表。
e.g.
+---------+------------+
|Product |Manufacturer|
+---------+------------+
|pears |Jim |
|apples |Fred |
|tomatoes |Adam |
|oranges |Bob |
|bananas |Fred |
|grapes |Carl |
+---------+------------+
If we are promoting Fred, the query would result in
+---------+------------+
|Product |Manufacturer|
+---------+------------+
|apples |Fred |
|bananas |Fred |
|tomatoes |Adam |
|oranges |Bob |
|grapes |Carl |
|pears |Jim |
+---------+------------+
有办法做到这一点吗?
答案 0 :(得分:6)
尝试:
SELECT *, CASE WHEN Manufacturer = 'Fred' THEN 0 ELSE 1 END AS Ordering
FROM ProductsTable
ORDER BY Ordering, Manufacturer
答案 1 :(得分:3)
在制造商旁边,输入一个新字段:重量,并将权重1提供给促销制造商,将0提供给其他人,然后写下您的查询:
SELECT * FROM ProductsTable ORDER BY Weight, Manufacturer
宣传制造商Fred,使用:
UPDATE ProductsTable SET Weight = 0;
UPDATE ProductsTable SET Weight = 1 WHERE Manufacturer='Fred';
(最好将这两个update
查询包装到事务中)
答案 2 :(得分:0)
这样的事情应该根据我对Microsoft Access数据库的经验而有效,但我希望在其他一些SQL数据库中也可以工作......
SELECT * FROM ProductsTable ORDER BY (Manufacturer='Fred'), Manufacturer;