我如何根据不在 SQL (sqlite) 中另一个 table 中的 ID 从一个 table 中 return 行?
How do I return rows from one table based on an ID NOT in another table in SQL (sqlite)?
您好,谢谢大家!!! (SQLITE)
我有 3 个表:旅行、中途停留、航班。一次 旅行 有很多 航班 ,还有很多 中途停留 。所有停留和航班都通过PID与旅行相关联。
我需要 return 已选择的旅行 (Trips.PIsSelected=1) 并且排除存在航班号的所有旅行。
SELECT t.* FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber <> 1892 AND t.PIsSelected = 1) GROUP BY f.PID
上面的语句只是 returns all Trips with t.PIsSelected = 1...我可以做相反的事情,下面的语句有效(但这不是我想要的。(下面) ).
SELECT t.* FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID
上述声明有效,并且 returns 结果是 The Trip Has PIsSelected=1 和 FlightNumber 为 1892...我需要 return FlightNumber 不是 1892 的所有结果. 谢谢.
我上传了 2 个 txt 文件到云端硬盘(Trips.txt,和 Flights.txt)
根据 Whosebug 的建议,列数据由 2 个空格分隔。
https://drive.google.com/drive/folders/13qJJgxCR11qQ122mW6AJ5c-60VA-O4Vt?usp=sharing
旅行
航班
中途停留
没有一些示例数据很难弄清楚,但如果您的第二个查询有效,也许可以使用它?例如
SELECT * from Trips where PID NOT IN (
SELECT t.PID FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID
)tmp and t.PIsSelected = 1
传奇RB找到了答案。谢谢瑞克!!!
SELECT t.* FROM Trips AS t
WHERE t.PIsSelected = 1 AND NOT EXISTS
(SELECT 1 FROM Flights f WHERE f.PID = t.PID AND f.FlightNumber = 1892)
也感谢您 Emmanuel H. 的主要查询...
非常感谢...
您好,谢谢大家!!! (SQLITE)
我有 3 个表:旅行、中途停留、航班。一次 旅行 有很多 航班 ,还有很多 中途停留 。所有停留和航班都通过PID与旅行相关联。
我需要 return 已选择的旅行 (Trips.PIsSelected=1) 并且排除存在航班号的所有旅行。
SELECT t.* FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber <> 1892 AND t.PIsSelected = 1) GROUP BY f.PID
上面的语句只是 returns all Trips with t.PIsSelected = 1...我可以做相反的事情,下面的语句有效(但这不是我想要的。(下面) ).
SELECT t.* FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID
上述声明有效,并且 returns 结果是 The Trip Has PIsSelected=1 和 FlightNumber 为 1892...我需要 return FlightNumber 不是 1892 的所有结果. 谢谢.
我上传了 2 个 txt 文件到云端硬盘(Trips.txt,和 Flights.txt) 根据 Whosebug 的建议,列数据由 2 个空格分隔。
https://drive.google.com/drive/folders/13qJJgxCR11qQ122mW6AJ5c-60VA-O4Vt?usp=sharing
旅行
航班
中途停留
没有一些示例数据很难弄清楚,但如果您的第二个查询有效,也许可以使用它?例如
SELECT * from Trips where PID NOT IN (
SELECT t.PID FROM Trips AS t
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE
(f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID
)tmp and t.PIsSelected = 1
传奇RB找到了答案。谢谢瑞克!!!
SELECT t.* FROM Trips AS t
WHERE t.PIsSelected = 1 AND NOT EXISTS
(SELECT 1 FROM Flights f WHERE f.PID = t.PID AND f.FlightNumber = 1892)
也感谢您 Emmanuel H. 的主要查询... 非常感谢...