SQL仅使用WHERE子句按唯一列筛选记录
我正在尝试使用SQL语句的WHERE子句筛选一个表,以仅显示列的不同值 下面是一个示例表:SQL仅使用WHERE子句按唯一列筛选记录,sql,sql-server,Sql,Sql Server,我正在尝试使用SQL语句的WHERE子句筛选一个表,以仅显示列的不同值 下面是一个示例表: Person ID | Name | City ---------------------------- 1 person1 city1 2 person2 city1 3 person3 city2 4 person4 city3 5 person5 city1
Person ID | Name | City
----------------------------
1 person1 city1
2 person2 city1
3 person3 city2
4 person4 city3
5 person5 city1
我希望获得如下输出所示的不同城市:
City
----
city1
city2
city3
但是,我的应用程序限制我只指定WHERE子句。
所以我允许的基本格式是:
select city from table1 where __________;
更新:我还尝试并发现SELECT语句使用的是所有列(*),而不是单个列,因此我无法使用:
select * from table1 where 1=1 group by city;
这在
where
子句中会产生预期效果
PersonId IN (SELECT MAX(PersonId) FROM table1 GROUP BY city)
这在
where
子句中会产生预期效果
PersonId IN (SELECT MAX(PersonId) FROM table1 GROUP BY city)
像这样的东西应该可以做到:
select *
from table1
where
PersonID IN
(
SELECT MIN(PersonID) AS MinID
FROM table1
GROUP BY City
)
像这样的东西应该可以做到:
select *
from table1
where
PersonID IN
(
SELECT MIN(PersonID) AS MinID
FROM table1
GROUP BY City
)
SQL提供关键字“DISTINCT”以仅显示列的不同值。这是一种直接的方法,不需要使用WHERE子句。另一种情况是,您可以使用GROUPBY子句和WHERE子句来获得不同的值,例如:从表1中选择城市,其中1=1 GROUPBY city SQL提供了一个关键字'DISTINCT',仅显示列的不同值。这是一种直接的方法,不需要使用WHERE子句。另一种情况是,您可以使用GROUPBY子句和WHERE子句来获得不同的值,例如:从表1中选择城市,其中1=1 GROUPBY city 使用WHERE无法获得不同的值。如果应用程序编码错误,并且允许SQL注入,您可以尝试
其中1=1 GROUP BY city
是否也可以在那里实现GROUP BY子句?->where 1=1 group by city从表1中选择distinct city
您的应用程序是否也限制distinct关键字?@Mihai再次阅读该问题。。使用where无法获得不同的值。如果应用程序编码错误,并且允许SQL注入,您可以尝试其中1=1 GROUP BY city
是否也可以在那里实现GROUP BY子句?->其中1=1按城市分组从表1中选择不同的城市您的应用程序是否也限制了不同的关键字?@Mihai再次阅读问题。。