我是新来的,如果这是一个愚蠢的问题,对不起。我需要有关mysql查询的帮助。
我们为客户提供各种服务。我们的服务和价格在这样的表格中
service | customer | price
1 | 0 | 1.1
2 | 0 | 2.1
3 | 0 | 1.3
2 | 1 | 1.9
3 | 2 | 1.2
如果客户= 0,则为默认价格。如果客户> 0,则该价格是该服务的客户特定价格。
我们需要向个人客户显示所有服务的价格。因此,我们需要进行查询,以便在出现客户特定价格的情况下,显示其他默认价格。
因此对于客户1,它应该显示
service | customer | price
1 | 0 | 1.1
2 | 1 | 1.9
3 | 0 | 1.3
对于客户2,应显示
service | customer | price
1 | 0 | 1.1
2 | 0 | 2.1
3 | 2 | 1.2
对于其他任何客户,
service | customer | price
1 | 0 | 1.1
2 | 0 | 2.1
3 | 0 | 1.3
我尝试过
select service, customer, price from services where (customer=1 or customer = 0) order by customer desc
但不会产生所需的输出
答案 0 :(得分:0)
您可以使用{{1}上的JOIN
用客户1(或您想要的任何客户)的值对客户0的价格进行自身LEFT JOIN
来获得所需的结果}},并用客户0的价格替换任何service
值:
NULL
输出(对于SELECT s0.service,
COALESCE(s.price, s0.price) AS price
FROM (SELECT service, price
FROM services
WHERE customer = 0) s0
LEFT JOIN services s ON s.service = s0.service AND s.customer = 1
ORDER BY service
):
customer = 1
Demo on dbfiddle(还显示service price
1 1.10
2 1.90
3 1.30
和customer = 2
的结果)