子查询的 SQL IN 运算符值

标签 sql sqlite

我想从具有两列的 IN 子查询中获取一个值,而无需执行两个查询。

样本:

SELECT * FROM table1 WHERE id IN(SELECT id, flags FROM table2);

现在我想得到 flags直接地。有可能吗,如果有,怎么做?

任何帮助表示赞赏:)

最佳答案

听起来您正在尝试实现以下两件事之一:

1) 选择 table1 中记录的每个字段(以及关联的 table 2 标志),其中记录的 id 也在 table2 的 id 列中找到。如果是这种情况,那么是的,连接将完成您想要的:

SELECT t1.*, 
       t2.flags
FROM table1 t1 
JOIN table2 t2
  ON t1.id = t2.id;

请注意 JOIN在这里使用(而不是其他类型的连接,例如 LEFT JOIN ),因为 JOIN将仅返回与 table2.id 匹配的 table1 记录。 LEFT JOIN另一方面,将返回每个 table1 记录,并且 table2 中没有匹配的 table1 id 将简单地具有 null在您返回的表的标志列中。

2) 选择 table1 中记录的每个字段,其中记录的 id 也在 table2 的 id 列或 table2 的 flags 列中找到。如果是这种情况,有几种方法可以获得所需的结果,但使用类似于问题的子查询来实现
SELECT * 
FROM table1
WHERE id IN (SELECT id FROM table2 UNION DISTINCT SELECT flags FROM table2)

关于子查询的 SQL IN 运算符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822680/

相关文章:

sql - 在关系数据库中存储大量点(x,y,z)

sqlite - 零字节文件是有效的 sqlite 数据库吗?

ios - 我的核心数据模型出了什么问题?

java - 是否有任何 "portable"Java SQL 包?

mysql - 选择 IF 查询

mysql - mysql中的GROUP BY特性

php - mysql在单个表的where条件下的多行值

java - 手机上不存在表,但模拟器上一切正常

mysql - SQL 中的引用完整性完整性检查

php - SQLite、SQLCipher、PHP 和 PowerShell 注意事项