给定以下数据集,我想选择在col1和col2上选择'n'之后的第一个和最后一个结果之间的行(所有列)。
pkey | col1 | col2 | day | Other columns...
1 | a | 1 | 1 |
2 | b | 2 | 1 |
3 | b | 2 | 1 |
4 | c | 3 | 1 |
5 | c | 4 | 1 |
6 | a | 5 | 2 |
7 | a | 5 | 2 |
8 | b | 6 | 2 |
9 | c | 7 | 2 |
10 | c | 8 | 2 |
对于n = 5,结果必须是:
pkey | col1 | col2 | day | Other columns...
1 | a | 1 | 1 |
2 | b | 2 | 1 |
3 | b | 2 | 1 |
4 | c | 3 | 1 |
5 | c | 4 | 1 |
6 | a | 5 | 2 |
7 | a | 5 | 2 |
我正在尝试使用SELECT DISTINCT col1, col2 FROM sampletable
作为基础但我无法访问其他列。怎么可以实现呢?
修改
更改说明以更清楚地了解我想要的内容 将第6行和第7行的col2从1更改为5以更接近我的实际数据。
答案 0 :(得分:1)
SELECT a.*
FROM sampletable AS a
INNER JOIN (SELECT DISTINCT col1, col2 FROM sampletable LIMIT 5) AS b
ON a.col1 = b.col1 AND a.col2 = b.col2
答案 1 :(得分:0)
public static void showAllFromKat(int ID){
con = getInstance();
if(con != null){
Statement query;
try{
query = con.createStatement();
String sql =
"SELECT * FROM learn_themen_db";
ResultSet result = query.executeQuery(sql);
while(result.next()){
int KatID = result.getInt("Kat_ID");
String DisplayName = result.getString("Display_Name");
if(KatID == ID){
System.out.println(DisplayName);
swing.addButton(DisplayName);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
使用此查询。
答案 2 :(得分:-1)
另一种不同的方式:
SELECT DISTINCT(CONCAT(col1, col2)) AS fgroup, pkey, day... FROM [table] GROUP BY fgroup LIMIT [LIMIT]
用表名替换[table]。
将[limit]替换为所需的限制。
替换" ..."通过您要列出的所有额外字段。