【问题标题】:Between Query [PostgreSQL & PHP]查询之间 [PostgreSQL & PHP]
【发布时间】:2011-08-11 06:37:33
【问题描述】:

我在问,但它误导了,很抱歉。我的问题是。

我有一个表排名(rank_id, rank_name, rank_min, rank_max)

如果我只想知道一个等级很简单

select * from ranks where (224 between rank_min and rank_max)

但如果想知道不止一个等级,比如 224、338、800 等是什么

我可以使用

select * from ranks where (224 between rank_min and rank_max) OR (338 between rank_min and rank_max) OR (800 between rank_min and rank_max)

但我不知道是否有简单的方法,比如使用

 IN(224,338,800)

以及如何在 PHP 中编写一个不修复的查询,我的意思是在解决方案 1 中,使用多个 BETWEEN OR。

在 PHP 中,我知道它是否是一个简单的查询,例如 select * from rank where(rank_min 和 rank_max 之间的 224)。只是通过价值。但我不知道如果超过一个值怎么办

任何机构都有技巧和样本如何做到这一点。我希望这个问题不会误导

谢谢

【问题讨论】:

    标签: php sql postgresql


    【解决方案1】:

    我有一个想法,我不知道它是否比使用 PHP 动态查询更好,但值得一试:

    SELECT *
    FROM ranks
    INNER JOIN (SELECT unnest(ARRAY[224, 338, 800]) AS n) TT
        ON n BETWEEN rank_min AND rank_max;
    

    您只需要使用 PHP 动态创建数组,但应该比创建整个查询要容易得多。

    【讨论】:

    • 哦,它只是一个别名,我不提,因为我没有看到'AS TT'
    • 嗨文森特。如果想使用 GROUP BY。例如:SELECT * FROM rank INNER JOIN (SELECT unnest(ARRAY[224, 338, 800]) AS n) TT ON n BETWEEN rank_min AND rank_max GROUP BY rank_id;
    • @Thessa:你想用 GROUP BY 做什么?
    猜你喜欢
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多