繁体   English   中英

具有多个 WHERE 条件的 SELECT 语句(MS-Access)

[英]SELECT statement with multiple WHERE criteria (MS-Access)

下面是示例数据:

c1   c2   c3   c4   c5
1    a1   a     1     1
2    a2   a     2     1
3    a3   a     3     1
4    a4   a     4     1
5    b1   b     1     1
6    b2   b     2     1
7    b3   b     3     1
8    b4   b     4     1
9    a1   c     3     1 

我想获得以下详细信息:

c1  c2  c3  c4  c5
1    a1  a   1    1
5    b1  b   1    1
9    a1  c   3    1

C1是主键,标准是针对任何给定的 unique(c2),其中 c4 是最低的,我想返回该行的内容(所有 5 列)。

尝试这个:

SELECT t1.*
FROM Table1 t1
INNER JOIN
(
  SELECT c3, MIN(c4) c4 
  FROM Table1
  GROUP BY c3
) t2 ON t1.c3 = t2.c3 ANd t1.c4 = t2.c4

SQL 小提琴演示

更新: 1在 SQL 中,返回的结果是一个集合(除非您指定ORDER BY子句,否则在这种情况下它是一个游标),其中的顺序是不保证的。 这是一个标准。 如果要保证特定顺序,则应使用 ORDER BY 子句。 在您的情况下,不能保证结果像1 5 9一样排序。 改为添加ORDER BY c1

ORDER BY子句在某些情况下可能很重要,例如,如果要获取前三行或最大行,在这种情况下您必须指定ORDER BY子句。

所以如果你想保留一个特定的订单,你必须指定一个ORDER BY


1正如@Fahim Parker 所指出的,请参阅下面的评论。

select c1,c2,c3,c4,c5
from table
where c4= (select min(c4) from table as f where f.c4 = table.c4);

我希望有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM