【问题标题】:Postgresql: find rows by idsPostgresql:按ID查找行
【发布时间】:2017-10-21 23:57:15
【问题描述】:

我想通过 id 从数据库(postgresql)中获取行,但我想确保我做得正确。

我在表 users 中有一些用户,我想通过 id 获取其中一些用户。示例:SELECT * FROM users WHERE id=100 or id=250 LIMIT 2

我希望它搜索 100 和 250,当找到 id=100 时,它只会搜索 id=250,但我不能 100% 确定数据库内部是否这样做

这可能吗?我该怎么做?

【问题讨论】:

    标签: mysql sql database postgresql


    【解决方案1】:

    如果你想要 100 和 250

    SELECT * FROM users WHERE id=100 or id=250 LIMIT 2;
    

    SELECT * FROM users WHERE id IN(100,250) LIMIT 2;
    

    (它们是等效的查询)

    发现它们的顺序无关紧要,可能会先找到 250,但如果存在,查询将只返回一行 100,如果存在,则返回另一行 250。

    【讨论】:

    • @everton IN() 只是与第一个查询完全相同的谓词的语法快​​捷方式,因此我怀疑断言能否被证明或适用于所有情况。
    • 谢谢。是的,我想要两者,但请注意,这些都是 id,因此如果已经找到该 id,则无需继续寻找,因为它们是唯一的。没有问题吗?
    • 正确,没有问题。如果该 ID 列是主索引(或任何唯一索引),则查询将直接转到这些行
    • 是的,id 是主键。我明白了,当 postgres 检测到这个字段是主键并且只查找这个 id 一次时,它已经为我做了。
    【解决方案2】:

    选择 * 从 表名 在哪里 id = '07629486-9d0c-488c-a3ae-10e55a997752';

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多