gpt4 book ai didi

android - 内部连接两个表并为第一个表中的每个条目从第二个表返回最大值

转载 作者:行者123 更新时间:2023-11-30 00:54:10 24 4
gpt4 key购买 nike

我如何在 SQLite 中构造一个查询,从 TABLE1 中选择每一行,并从 TABLE2 中选择一行,其中:

  • TABLE1 中的 id 值与;
  • 如果 TABLE2 中有多个 id 匹配项,则仅返回另一个 DATE 列中的最大值。

这是我现在的餐 table 布置。 r_identifier 列中的值对应于 TABLE1 中的 t_id 值:

TABLE1(“坦克”)

+------+--------------+-------+
| t_id | t_name | t_vol |
+------+--------------+-------+
| 1 | A Tank | 23 |
| 2 | Another Tank | 48 |
+------+--------------+-------+

TABLE2("读数")

+------+--------------+--------+---------+
| r_id | r_identifier | r_date | r_value |
+------+--------------+--------+---------+
| 0 | 1 | 5000 | 5 |
| 1 | 1 | 6000 | 7 |
| 2 | 2 | 7000 | 4 |
| 3 | 1 | 8000 | 3 |
+------+--------------+--------+---------+

这是我想从查询中返回的表。因为 1r_identifier 有多个条目,所以只返回 r_date 中具有最高值的条目:

+------+--------------+-------+------+--------------+--------+---------+
| t_id | t_name | t_vol | r_id | r_identifier | r_date | r_value |
+------+--------------+-------+------+--------------+--------+---------+
| 1 | A Tank | 23 | 3 | 1 | 8000 | 5 |
| 2 | Another Tank | 48 | 2 | 2 | 7000 | 4 |
+------+--------------+-------+------+--------------+--------+---------+

到目前为止,我能做到的最接近的是以下声明,灵感来自 this answer :

SELECT t.*, r.* FROM t INNER JOIN r ON t._id=r_identifier ORDER BY r_date DESC LIMIT 1

这会返回正确的值,但只有一个“坦克”——表中的第一个。

编辑我忘了在我原来的问题中提到我想检索 TABLE1 中的 every 值,即使 TABLE2 中没有匹配的条目r_identifier 列中的值。使用Gordon Linoff's answer作为指导,尽管我能够提出以下效果很好的方法:

SELECT t.*, r.* 
FROM t LEFT OUTER JOIN
r ON t._id=r_identifier
WHERE
(r_date IS NULL) OR
(r_date=(SELECT MAX(r2.r_date)
FROM r r2
WHERE r.r_identifier=r2.r_identifier));

最佳答案

一种方法是使用带有相关子查询的WHERE 子句来获取最大日期:

SELECT t.*, r.*
FROM t INNER JOIN
r
ON t._id = r.r_identifier
WHERE r.r_date = (SELECT MAX(r2.r_date)
FROM r r2
WHERE r.r_identifier = r2.r_identifier
);

关于android - 内部连接两个表并为第一个表中的每个条目从第二个表返回最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450972/

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