gpt4 book ai didi

sql - 用于搜索我的年龄组的数据库架构

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:57 24 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间,现在我想弄清楚如何最有效地做到这一点。

问题如下。我在数据库中有针对特定年龄组(例如 10 到 20 岁16 岁以上 进行营销的项目,我需要能够进行如下查询,查找适合 17 岁的商品

这是我的两个最佳想法(但我都不喜欢,因为我认为它们都效率低下)。

  1. 有一个 csv 列,其值如 10-2016+ ,检索整个列表,并解析它(坏主意,我知道,虽然我在这里没有想法)

  2. 有一个 csv 列,其值如 10,11,12,13...20 用于范围,因此我可以使用 WHERE ages LIKE "%17"查找它%",对于像 16+ 这样的情况,我必须使用像 WHERE ages LIKE "%+%" 这样的东西来检索那些特殊情况并解析那些。

我当然倾向于第二种选择,但在最好的情况下,我运行两个查询,一个针对常规项目,另一个针对 16+

有没有更好的方法?如果不是,您认为您可以使我的任何一个模型更有效率吗?谢谢。

最佳答案

你可以这样做:

  1. lower_ageupper_age 列添加到您的表中,这两个整数都允许 NULL。
  2. 如果 lower_age 为 NULL,则没有下限。
  3. 如果 upper_age 为 NULL,则没有上限。
  4. 结合使用 COALESCE 和 BETWEEN 来处理您的查询。

为了澄清 (4),您想这样说:

select *
from your_table
where $n between coalesce(lower_age, $n) and coalesce(upper_age, $n)

其中 $n 是您要查找的年龄。 BETWEEN 使用包含边界,所以 coalesce(lower_age, $n) 忽略 $n 如果 lower_age 不为 NULL 并给你 $n > = $n(即在该边界上自动为真)如果 lower_age 为 NULL; upper_age 也是如此。

如果某些东西只适合 11 岁的 child ,那么您的 [lower_age,upper_age] 闭区间将是 [11, 11],16+ 将是 [16, NULL],6 及以下将是 [NULL, 6],每个人都是 [NULL, NULL],没有人会是[23, 11] 或任何其他具有 lower_age > upper_age 的内容(或者更可能是 CHECK 约束会引发嘶嘶声的无效数据)。

关于sql - 用于搜索我的年龄组的数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8441388/

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