例如:

Select...
FROM...
WHERE street IN (
    SELECT street, country
    FROM ...
    WHERE ...
);

在这里,IN前面只有1个值(即"Street"),子查询有"Street"和"Country".我的问题是,我能做这种事吗?

我有一个附带的问题: 我可以在WHERE子句中使用MAX(...)吗? 我可以使用不在SELECT子句中的数据吗?喜欢:

Select data.Person、data.City

从数据

其中Max(data.number)

按城市分组

我们有个人、城市作为候选关键字.则查询的输出将是具有最高数字的相应人员的城市.

推荐答案

您提供的语法不是有效的SQL,因为IN子句中使用的子查询 Select 了两列(街道和国家).IN子句要求子查询返回单列的值.

如果您希望基于子查询(VALID_STREADS)中的街道和国家/地区的组合来过滤主表中的行(例如地址),则应该使用EXISTS或JOIN子句.下面是一个使用EXISTS的示例:

SELECT *
FROM addresses a
WHERE EXISTS (
    SELECT 1
    FROM valid_streets v
    WHERE v.street = a.street
      AND v.country = a.country
      AND condition
);
SELECT a.*
FROM addresses a
JOIN valid_streets v ON a.street = v.street AND a.country = v.country
WHERE condition;

我希望它能帮助您理解,简单地解释一下,您不能将一维数组搜索或筛选为两列

Sql相关问答推荐

在Golang中管理数据库事务的简洁方法

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

通过之前的连接-这是Oracle的错误吗?

将所有XML文件导入到SQL Server中

存储过程太慢

按二维数组的第一个元素排序

不同计数的 Postgres PIVOT 表

我需要在 ASP.NET C# 中获取 2 个 SQL 查询结果的平均值

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

如何在第二个 INSERT 中使用第一个 INSERT 自动生成的 ID

Postgresql 需要一个查询,为我提供所有没有具有特定状态值的子元素的父母

如何筛选 GROUP BY 结果? HAVING 没有产生预期的结果

Set vs let vs 在snowflake中声明变量

使用SQL中另一个表的查询结果在表中查找记录

Oracle SQL 从多个条件中 Select 但具有相同的 id

使用 R 遍历 SQL 查询,每次替换一个变量

根据开始/结束标记将 GROUP_ID 分配给行

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?

在 Microsoft SQL Server 中,如何只为特定值保留不同的行?

如何优化sql请求?