【发布时间】:2016-12-19 22:10:12
【问题描述】:
我们目前正在查询 Oracle DB 并以 JSON 格式返回结果。查询结果正在返回更多重复的行。控制器如下所示
public HttpResponseMessage Getdetails([FromUri] string[] Column)
{
List<string> selectionStrings = new List<string>();
string connStr = ConfigurationManager.ConnectionStrings["PConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var colDict = new Dictionary<string, string>()
{
{"CATEGORY", "STCD_PRIO_CATEGORY_DESCR.DESCR"},
{"SESSION_NUMBER", "STCD_PRIO_CATEGORY_DESCR.SESSION_NUM"},
{"SESSION_START_DATE","Trunc(STCD_PRIO_CATEGORY_DESCR.START_DATE)"},
{"SESSION_START_TIME","STCD_PRIO_CATEGORY_DESCR.START_DATE"}}};
foreach (string col in Column)
{
string selector = colDict[col];
selectionStrings.Add(string.Format("{0} AS {1}", selector, col));
}
string selectString = string.Join(",", selectionStrings);
var strQuery = string.Format(@"SELECT {0}
FROM
STCD_PRIO_CATEGORY_DESCR", selectString);
}}}
所以如果我只是在 Select 语句中添加 Distinct 为
var strQuery = string.Format(@"SELECT DISTINCT {0}
FROM
STCD_PRIO_CATEGORY_DESCR", selectString);
这样就够了吗?或者我们应该把 DISTINCT 放在所有列名之前
【问题讨论】:
-
您是否相信 DISTINCT 解决方案?结果如何?
-
yes DISTINCT 只在 SELECT 之后和指定列之前直接使用一次
-
@CodeNotFound 当我使用 Distinct 时没有区别。
-
@Matt 我尝试使用 DISTICT 但返回的行数是一样的
-
如果你得到相同数量的不同记录,这意味着你已经只得到了 DISTINCT 记录。如果您期望更少的记录,您可能会包含一个列,该列使您并不真正需要或不想要的记录变得独一无二,并导致记录数高于预期
标签: c# sql asp.net asp.net-mvc oracle