在这个表中,可能有数千行,其中一些可能具有相同的fir_sno [第2列]。 我的问题是通过sno desc命令仅从此表顺序中选择不同的行。它应该返回sno:2,3。为此我尝试了以下sql查询,但它的返回行没有:1,3我需要行号:2,3。
UPDATE Table1, Table1 AS Table1_2 SET Table1_2.Field2 = [Table1]![Field2],
Table1_2.Field3= [Table1]![Field3], Table1_2.Field4= [Table1]![Field4]
WHERE (((Table1.ID)=2) AND ((Table1_2.ID)=5));
请帮助我完成我所需的工作?
感谢您宝贵的时间.l
答案 0 :(得分:0)
您可以查看 在哪里f.sno<> p.fir_sno
答案 1 :(得分:0)
您正在分组,但没有使用聚合函数
考虑这个类似的例子
mysql> create table test (a int, b int, c int);
Query OK, 0 rows affected (0,47 sec)
mysql> insert into test values (1,1,1),(2,1,2),(3,2,3);
Query OK, 3 rows affected (0,08 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into test values (1,1,1),(2,1,2),(3,2,3);
mysql> select a, b, c from test group by b;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 1 | 1 |
| 3 | 2 | 3 |
+------+------+------+
2 rows in set (0,00 sec)
如果我正确理解您的问题,您需要的是在列a(在您的示例中为sno)中指定聚合,以便仅获取列b上每个组的最后一个(最高)值:
mysql> select max(a), b, c from test group by b;
+--------+------+------+
| max(a) | b | c |
+--------+------+------+
| 2 | 1 | 1 |
| 3 | 2 | 3 |
+--------+------+------+
2 rows in set (0,04 sec)
注意:这种方法在其他DBMS中不起作用,因为MySQL通过语法具有更宽松的组。供参考:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html