gpt4 book ai didi

sql - 在 SQL 中选择满足两个条件的项目

转载 作者:行者123 更新时间:2023-12-04 21:50:20 24 4
gpt4 key购买 nike

我有一个系统将字段中项目的 XYZ 位置报告给 SQL 数据库。我试图过滤误报(仅识别移动的项目),方法是过滤项目通过一个点的已知时间点,以及项目在通过一个点后应该位于的位置。

我的逻辑是,如果一个项目在一个位置和时间并且在另一个位置和时间,它一定已经移动了。

所以我有这个查询:

SELECT tag_ID, X_location*3.28, Y_location*3.28, locate_time
FROM tag_blink_history
WHERE
(LOCATE_TIME > '2013-01-29 11:05:51'
AND LOCATE_TIME < '2013-01-29 11:06:56'
AND ((y_location*3.28 > 61)
AND (y_location*3.28 < 67.5))
AND ((x_location*3.28 > 14.5)
AND (x_location*3.28 < 17.5)))
AND (((y_location*3.28 > 70)
AND (y_location*3.28 < 75))
AND locate_time < '2013-01-29 11:06:50' )
ORDER BY tag_id DESC

有任何想法吗?我意识到我用上面的查询询问 SQL 是一次在两个地方的东西(这不可能发生),但我想要的是同时存在于这两个空间约束中的记录 - 我想要它们在两个地方的记录,而不是要求同时在两者中的记录。

最佳答案

我认为您需要加入自身——您当前的查询永远不会产生任何结果。

尝试这样的方法来获取在您的 WHERE Critera 中多次出现的标签——但是,您是否在第二个位置缺少一些标准?这个例子使用你上面的例子:

SELECT DISTINCT t.tag_ID
FROM tag_blink_history t
JOIN tag_blink_history t2 ON t.tag_ID = t2.tag_ID AND (t.x_location <> t2.x_location OR t.y_location <> t2.y_location)
WHERE (t.LOCATE_TIME > '2013-01-29 11:05:51'
AND t.LOCATE_TIME < '2013-01-29 11:06:56'
AND ((t.y_location*3.28 > 61) AND (t.y_location*3.28 < 67.5))
AND ((t.x_location*3.28 > 14.5) AND (t.x_location*3.28 < 17.5)))
AND (((t2.y_location*3.28 > 70) AND (t2.y_location*3.28 < 75))
AND t2.locate_time < '2013-01-29 11:06:50' )
ORDER BY t.tag_id DESC

祝你好运。

关于sql - 在 SQL 中选择满足两个条件的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588882/

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