我有以下简短的SQL代码,我完全被卡住了。
$str
它的基本作用是返回用户为某项商品支付的价格及其全名,当然,这些值也不为空。
但是,当我通过降序排序(因为我需要找出支出最高的50个支出者)时,值99.99显然是最高的,其中诸如149.99的值在列表中排在后面。
很抱歉,如果这是一个结构不良的问题,我在这里还是SQL的新手,但是任何形式的帮助都将是惊人的。
输出示例:1
答案 0 :(得分:0)
我建议您的Purchase_Price
列当前为文本,因此它按文本排序,而不必按数字顺序。尝试转换为十进制,然后在此列上进行排序:
ORDER BY
CAST(Purchases_FULL_LOCKED.Purchase_Price AS decimal) DESC;
这是完整的查询:
SELECT
p.Purchase_Price,
c.first_name,
c.last_name
FROM Purchases_FULL_LOCKED p
LEFT JOIN Customers_Details_FULL_LOCKED c
ON p.Cust_ID = c.customer_id
WHERE
c.first_name IS NOT NULL
ORDER BY
CAST(p.Purchase_Price AS decimal) DESC;
我引入了表别名,这使查询更易于阅读。
答案 1 :(得分:0)
之所以发生,是因为该值存储为数字。最简单的方法是将值转换为数字:
order by Purchases_FULL_LOCKED.Purchase_Price + 0 desc