我有以下查询:
string Query = String.Format("SELECT ArticleName FROM tblArticles WHERE UserID={0} ORDER BY PostDate DESC", UserID);
我想为“ArticleName”获得不超过 3 个不同的值。
有可能这样做吗?(没有选择所有的 'ArticleName' 只是其中的 3 个?)
谢谢。
我有以下查询:
string Query = String.Format("SELECT ArticleName FROM tblArticles WHERE UserID={0} ORDER BY PostDate DESC", UserID);
我想为“ArticleName”获得不超过 3 个不同的值。
有可能这样做吗?(没有选择所有的 'ArticleName' 只是其中的 3 个?)
谢谢。
您需要说明您使用的是什么 RDBMS。Mysql 和 sqlite 支持该LIMIT
指令,而其他系统可能支持也可能不支持TOP
,FIRST
或其他类似指令。
更新:看看不同的 RDBMS 引擎如何支持它。请参阅getLoadSomeRowsSql()
infinispan 中的方法TableManipulation.java
。
在这里,如果链接停止工作:
switch (getDatabaseType()) {
case ORACLE:
loadSomeRowsSql = String.format("SELECT %s, %s FROM (SELECT %s, %s FROM %s) WHERE ROWNUM <= ?", dataColumnName, idColumnName, dataColumnName, idColumnName, getTableName());
break;
case DB2:
case DB2_390:
case DERBY:
loadSomeRowsSql = String.format("SELECT %s, %s FROM %s FETCH FIRST ? ROWS ONLY", dataColumnName, idColumnName, getTableName());
break;
case INFORMIX:
case INTERBASE:
case FIREBIRD:
loadSomeRowsSql = String.format("SELECT FIRST ? %s, %s FROM %s", dataColumnName, idColumnName, getTableName());
break;
case SQL_SERVER:
loadSomeRowsSql = String.format("SELECT TOP (?) %s, %s FROM %s", dataColumnName, idColumnName, getTableName());
break;
case ACCESS:
case HSQL:
case SYBASE:
loadSomeRowsSql = String.format("SELECT TOP ? %s, %s FROM %s", dataColumnName, idColumnName, getTableName());
break;
default:
// the MySQL-style LIMIT clause (works for PostgreSQL too)
loadSomeRowsSql = String.format("SELECT %s, %s FROM %s LIMIT ?", dataColumnName, idColumnName, getTableName());
break;
}
通常,您可以LIMIT 3
在查询结束时使用来实现此目的
string Query = String.Format(
"SELECT ArticleName FROM tblArticleas WHERE UserID={0} ORDER BY PostDate DESC LIMIT 3",
UserID
);
或者对于 Microsoft Access DB,显然您需要TOP 3
在开始时使用,例如:
string Query = String.Format(
"SELECT TOP 3 ArticleName FROM tblArticleas WHERE UserID={0} ORDER BY PostDate DESC",
UserID
);
也许
SELECT DISTINCT TOP 3 ArticleName, PostDate FROM tblArticleas WHERE UserID={0} ORDER BY PostDate DESC
用这个:
string Query = String.Format("SELECT DISTINCT TOP 3 ArticleName FROM tblArticles WHERE UserID={0} ORDER BY PostDate DESC", UserID);