当前位置: 首页 > 面试题库 >

如何在选择查询中比较多列和多字段数组?

卫烨
2023-03-14
问题内容

我在API服务器上创建查询时有些卡住,我只想用修改后的跟踪数据进行响应。我有tracks几列这样的表。

tracks(id, audio_fingerprint, name, creation_date, modified_date)

现在,我只想跟踪在上次获取的时间戳(作为API请求参数传递的音频指纹和上一次获取的时间戳的数组)之后进行更新的轨道。

SELECT * from tracks WHERE (audio_fingerprint, modified_date) IN (Array(audioFingerprint, > lastFetchedTimestamp));

(^^这是无效的查询,仅用于理解)。

谢谢


问题答案:

示例数据:

create table tracks (audio_fingerprint text, modified_date date);
insert into tracks values
    ('a', '2017-01-10'),
    ('b', '2017-01-10'),
    ('a', '2017-02-10'),
    ('b', '2017-02-10'),
    ('c', '2017-02-01');

将参数放在with查询中,并将其与表连接:

with given_values (fingerprint, last_fetched) as (
values
    ('a', '2017-01-01'::date),
    ('b', '2017-02-01')
)

select * 
from tracks t
join given_values v
on t.audio_fingerprint = v.fingerprint
and t.modified_date > v.last_fetched;

 audio_fingerprint | modified_date | fingerprint | last_fetched 
-------------------+---------------+-------------+--------------
 a                 | 2017-01-10    | a           | 2017-01-01
 a                 | 2017-02-10    | a           | 2017-01-01
 b                 | 2017-02-10    | b           | 2017-02-01
(3 rows)

除了CTE,您还可以使用派生表:

select * 
from tracks t
join (
    values
        ('a', '2017-01-01'::date),
        ('b', '2017-02-01')
    ) v(fingerprint, last_fetched)
on t.audio_fingerprint = v.fingerprint
and t.modified_date > v.last_fetched;


 类似资料:
  • 问题内容: 基本上有属性表和翻译表-一个属性有很多翻译。 我需要从翻译中为指定属性的每个属性选择id和value,即使该语言没有翻译记录也是如此。我缺少某种连接技术,或者连接(不涉及语言表)在这里不起作用,因为以下操作不会返回具有指定语言的不存在的翻译的属性。 所以我正在使用这样的子查询,这里的问题是用相同的参数在同一个表中创建两个子查询(感觉像性能消耗,除非mysql将那些子查询分组,我怀疑这是

  • 问题内容: 我一直认为您可以在语句中使用它来查询MySQL中的内容。因此,如果我想将一行中的多个字段与1个关键字或字词进行比较: 如果我有一系列要比较的单词: 我不相信语法是正确的。除了类似的东西,是否有一种有效的方法可以编写此代码: 我能正确处理吗? 问题答案: 用这个::

  • 我试图使用JPA标准编写以下查询,但我无法选择子查询中的多列。 我陷入了下面的实现过程中,无法找到如何在子查询中选择多个列。请看我在代码中的评论(第三行)。 请帮我解决这个问题。

  • 问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询

  • 我在这里尝试使用光标,我想知道如何访问选择列中的光标字段? 我有一个如下的实现, 我想明白,这个实现有什么问题。 谢谢你。

  • 问题内容: 在hibernate状态下,我想选择鉴别值。就像是 想法是将该查询的结果发送到客户端,以便我可以根据区分列(即猫,狗,大象等)的值显示不同的图标。 那可能吗?怎么样? 问题答案: 您可以按照以下步骤进行操作: 从Hibernate文档中: 在多态持久性的情况下,特殊属性类访问实例的鉴别符值。