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

如何为表中的每一行运行特定的sql查询?

况明贤
2023-03-14
问题内容

所以我的数据库中有两个表,它们都看起来像这样:

通讯:(已拨打电话)

Timestamp            FromIDNumber ToIDNumber GeneralLocation 
2012-03-02 09:02:30  878          674        Grasslands 
2012-03-02 11:30:01  456          213        Tundra 
2012-03-02 07:02:12  789          654        Mountains

移动:

Timestamp            IDNumber Type        X   Y  
2012-03-02 11:02:30  379      pedestrian  32  46
2012-03-01 12:32:41  654      pedestrian  54  56
2012-03-02 07:02:16  789      pedestrian  39  52

我想做的是找到最接近给定“通信”时间戳的“移动”时间戳。基本上,我想找到一个人打电话时可能去过的地方。

目前,我这样做是:

SELECT 
      movement.timestamp,
      movement.x,
      movement.y 
 FROM movement
WHERE (movement.IDNumber=789 AND movement.timestamp>='2012-03-02 07:02:12')
ORDER BY movement.timestamp LIMIT 1;

输出将是:

timestamp            x   y 
2012-03-02 07:02:12  39  52

我将呼叫者的IDNumber和设置timestamp到的FromIDNumber位置,然后timestamp他们拨打了电话。因此,这将找到一个呼叫者的可能位置。

在这种情况下,789打电话到07:02:12,并且他的移动数据07:02:16表明他的位置在(39,52)。这样一来,它就会显示在他可能的位置,因为只有4秒钟之后。

但是,如何对Communication表中的每个呼叫运行该特定查询,而不必手动填写每个查询?

例如,然后,将为通信表的所有行计算位置,而不是仅针对一次呼叫进行计算,例如:

timestamp            x   y 
2012-03-02 07:02:12  39  52
2012-03-02 03:15:14  23  34
2012-03-02 05:06:07  34  55
2012-03-02 02:41:21  12  56
...

等等。

我尝试将某些东西与java.sql一起使用,但是事情变得有些复杂,我想知道是否有更简单的方法。我该如何解决这个问题?

问题是我刚刚开始学习SQL,所以我真的不确定在这里做什么。我看了一些其他的SO帖子,但它们全都用于sql-
server,而我却真的听不懂。任何帮助将不胜感激,谢谢!


问题答案:

试试这个:

SELECT c.FromIDNumber, m.Timestamp, m.X, m.Y
FROM Communication c
JOIN Movement m ON c.FromIDNumber = m.IDNumber
WHERE m.TimeStamp = (SELECT MIN(mm.Timestamp)
                     FROM Movement mm
                     WHERE mm.TimeStamp >= c.TimeStamp)

您可以使用此 SQL Fiddle测试不同的数据组合。



 类似资料:
  • 问题内容: 我有一个包含两列,ID和XML数据的表。我想为每个ID切碎XML。我在XML中提取了一个值,并且所有XML的结构都相同,但我不确定如何在表中循环并将XML查询应用于每行。 我需要应用的查询如下: 因此,最终结果将具有两列,即ID和XML的切碎值。 问题答案: 没有关于您的实际XML以及如何粉碎它以获取一些值的任何知识,就不可能完整地回答,但这应该为您指明了正确的方向: 照 原样 返回I

  • 问题内容: 我正在编写一个SQL查询以获取Report Builder 3.0中报表的参数列表。我需要在结果中添加一个额外的行,其值为“ All”,如下所示: 效果很好,但是查询返回的行以字母顺序排序,实际上我一直希望“全部”始终出现在顶部(即返回第一行)。其余结果可以按字母顺序排序。 我已经看到有关向表中添加排序顺序列的建议,但是我对SQL还是很陌生,并且不知道如何执行此操作。 感谢您的任何建议

  • 问题内容: 这是一个示例代码: 因此,这个位于productOrderContainer中的表有几列,根据几件事,将有几行,每行都有几列。一个例子是: 我想做的是例如获取此表的第一行。(行具有ID ,例如:),然后再次在该行跨度中寻找特定值 所以在伪代码中我想说的是: 给我桌子,给我第n行,给我值 问题答案: 您可以尝试关注 您还可以遍历表行以执行所需的任何功能。

  • 问题内容: 我有这个SQL查询: 这将导致类似于以下的输出: 我想每个Foo仅保留第一行,而忽略其余的行。 我怎么做? 问题答案:

  • 我试图从另一个表中创建一个子表,其中所有的姓氏字段排序为A-Z,其中有一个电话号码字段不是null。我可以用SQL很容易做到这一点,但是我不知道如何在Excel中运行SQL查询。我很想将数据导入postgresql,然后在那里查询,但这似乎有点过分。 对于我正在尝试做的事情,SQL查询可以做到这一点。这似乎太简单了,因为它是Excel本地无法完成的事情。如何在Excel中运行这样的SQL查询?

  • 问题内容: 我想选择总计为特定值的行。 我的SQL(SQL Fiddle): 它应该计算总和为410000并获取行。同时它应该得到这样的东西: 如您所见,42552 + 367225 =409777。它选择了两行,总行数接近410000。 我已经尝试了一切,但是没有用:( 对不起,我的语言,我是德语。 问题答案: 您可以使用相关子查询来获取运行总计,并检索其运行总计小于指定数量的行。(请注意,我将