棘手的SQLite查询,可能需要一些帮助
我有一个相当混乱的SQLite查询,我似乎无法完全理解它 我有以下四个表格: 表“S” 表“T” 表“S2TMap” 表“温度” 我需要的是,如果temp.NewID表中不存在sID,则能够获取指定“t”中存在的MAX()sNum 例如,给定T'000,'000'将S'aaa aaa'、'bbb bbb'、'fff fff'和'ggg ggg'映射到它。然而,“fff fff”和“ggg ggg”都存在于临时表中,这意味着我只需要查看“aaa aaa”和“bbb bbb”。因此,语句将返回“2”棘手的SQLite查询,可能需要一些帮助,sql,sqlite,join,inner-join,Sql,Sqlite,Join,Inner Join,我有一个相当混乱的SQLite查询,我似乎无法完全理解它 我有以下四个表格: 表“S” 表“T” 表“S2TMap” 表“温度” 我需要的是,如果temp.NewID表中不存在sID,则能够获取指定“t”中存在的MAX()sNum 例如,给定T'000,'000'将S'aaa aaa'、'bbb bbb'、'fff fff'和'ggg ggg'映射到它。然而,“fff fff”和“ggg ggg”都存在于临时表中,这意味着我只需要查看“aaa aaa”和“bbb bbb”。因此,语句将返回“2”
我该怎么做呢 我一直在想下面的方法来选择“临时”表中不存在的s,但我不确定如何获得最大的座位,并且只基于特定的“不”
SELECT s.sID, s.sNum FROM s WHERE NOT EXISTS ( SELECT newID from temp where tmp.newID = s.sID)
谢谢 您很接近,您只需在S2TMap上加入,然后加入到T,以便将结果集限制为给定的T
SELECT MAX(s.sNum)
FROM s
INNER JOIN S2TMap m on m.sID = s.sID
INNER JOIN t on t.tID = m.tID
WHERE t.tID = '000'
AND NOT EXISTS (
SELECT newID FROM temp WHERE temp.newID = s.sID
)
很接近,您只需在S2TMap上加入,然后加入到T,以便将结果集限制为给定的T
SELECT MAX(s.sNum)
FROM s
INNER JOIN S2TMap m on m.sID = s.sID
INNER JOIN t on t.tID = m.tID
WHERE t.tID = '000'
AND NOT EXISTS (
SELECT newID FROM temp WHERE temp.newID = s.sID
)
以下查询应为您提供Ts及其最大SNUM的列表(只要在S和S2TMap中都存在):
以下查询应为您提供Ts及其最大SNUM的列表(只要在S和S2TMap中都存在): 尝试一下:
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and not exists (
select * from temp
where temp.newId = st.sId)
这是可以玩的游戏
另一种可能效率较低的选择是:
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and st.sId not in (
select newId from temp)
尝试一下:
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and not exists (
select * from temp
where temp.newId = st.sId)
这是可以玩的游戏
另一种可能效率较低的选择是:
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and st.sId not in (
select newId from temp)
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and not exists (
select * from temp
where temp.newId = st.sId)
select max(s.sNum) result from s2tmap st
join s on st.sId = s.sId
where st.tId = '000' and st.sId not in (
select newId from temp)