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

我正在尝试使用SQL语句的WHERE子句筛选一个表,以仅显示列的不同值

下面是一个示例表:

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再次阅读问题。。