gpt4 book ai didi

SQL:选择具有条件优先级的随机行

转载 作者:行者123 更新时间:2023-11-29 12:54:05 26 4
gpt4 key购买 nike

我有一个条件,我想根据他们是否符合以下三个条件之一来选择一个随机用户:

  1. 如果他们匹配邮政编码
  2. 如果他们匹配城市名称
  3. 如果他们匹配州名

如果匹配到一个,则返回随机选择的结果。

本质上是这样的(~伪代码):

SELECT * FROM user
INNER JOIN address ON address.id = user.address_id
WHERE address.zipcode = '00000' IF EXISTS ELSE (
WHERE address.province = 'State Name' IF EXISTS ELSE
(WHERE address.city = 'City Name')
)
ORDER BY RANDOM() LIMIT 1;

有什么好的方法可以做到这一点,还是将它分成三个单独的查询会更容易?

最佳答案

如果我没理解错的话,你想要一个优先顺序,从邮政编码开始。如果是这样:

SELECT u.*
FROM user u INNER JOIN
address a
ON a.id = u.address_id
WHERE a.zipcode = '00000' OR
a.province = 'State Name' OR
a.city = 'City Name'
ORDER BY (a.zipcode = '00000')::INT DESC,
(a.province = 'State Name')::INT DESC,
(a.city = 'City Name')::INT DESC,
random();
LIMIT 1;

如果您只想匹配这三者中的任何一个——并在其中随机选择——那么使用ORDER BY random()

关于SQL:选择具有条件优先级的随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552474/

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