gpt4 book ai didi

mysql - 优先考虑版本存在的某些行

转载 作者:行者123 更新时间:2023-11-29 20:10:21 24 4
gpt4 key购买 nike

我有一个供用户使用的定价表

pid | price | service | package | interval | user
1 | 1 | 1 | 10 | w | 0
2 | 4 | 1 | 10 | m | 0
3 | 3 | 1 | 10 | m | 1
4 | 2 | 1 | 20 | w | 0
5 | 8 | 1 | 20 | m | 0
6 | 5 | 1 | 25 | w | 0
7 | 20 | 1 | 25 | m | 0
8 | 4 | 1 | 25 | w | 1
9 | 4 | 1 | 15 | w | 1
10 | 16 | 1 | 15 | m | 1

0 行包含每个人的一般价格。现在我有时会给某些用户提供折扣。这个价格将有一个用户的 id 作为用户。

现在我想要一个为用户选择所有价格的查询。它应该采用用户为 0 或用户为用户 id 的所有价格,但如果存在 0 为用户且用户 id 为用户的行,则应仅采用用户 id 为用户的行。

SELECT * FROM `prices` WHERE user = 0 OR user = 1 AND [...]

应该返回

pid | price | service | package | interval | user
1 | 1 | 1 | 10 | w | 0
3 | 3 | 1 | 10 | m | 1
4 | 2 | 1 | 20 | w | 0
5 | 8 | 1 | 20 | m | 0
7 | 20 | 1 | 25 | m | 0
8 | 4 | 1 | 25 | w | 1
9 | 4 | 1 | 15 | w | 1
10 | 16 | 1 | 15 | m | 1

最佳答案

您可以使用union all来完成此操作。首先为用户选择所有价格。然后选择用户 0 中所有不匹配的价格。你的问题不清楚,价格是多少。这是一个猜测:

select p.*
from prices p
where p.user = 1
union all
select p.*
from prices p
where p.user = 0 and not exists (select 1
from prices p2
where p2.service = p.service and
p2.package = p.package and
p2.interval = p.interval and
p2.user = 1
);

关于mysql - 优先考虑版本存在的某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com