我在两个日期之间选择了两条记录,当我这样做时,我正在经历重复记录,我使用了单词distinct但它不起作用:这是我的查询的样子:
public List<i> searchTwoDates(string firstDate, string secondDate)
{
DateTime fdate = Convert.ToDateTime(firstDate);
string realfirstDate = fdate.ToLongDateString();
DateTime sdate = Convert.ToDateTime(secondDate);
string realsecondDate = sdate.ToLongDateString();
List<i> date = new List<i>();
SqlConnection conn = new SqlConnection(....);
SqlCommand command = new SqlCommand(@"SELECT distinct * From TableName WHERE Cast(columnName AS DATE) > @columnName AND CAST(columnName AS DATE) < @columnName1 ORDER BY columnName1 Desc", conn);
command.Parameters.AddWithValue("@columnName", realfirstDate);
command.Parameters.AddWithValue("@columnName2", realsecondDate);
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Mod d = new Mod();
here i get my column names....
date.Add(d);
}
conn.Close();
return date;
}
我的数据库中也有一个唯一的ID,所以我们可以使用它来检索唯一的记录,但我该怎么写呢?
目前我正在重复记录
ID FName sName Date
1 John JAck 2013-9-07
2 Linda Bush 2013-10-07
3 Linda Bush 2013-11-07
This is what i want
ID FName sName
1 John JAck 2013-9-07
2 Linda Bush 2013-11-07
这是2013-9-07至2013-11-07之间的记录。在这些记录之间,我不想要任何重复的ID
答案 0 :(得分:1)
[从评论中迁移]
您应该使用select distinct id, fname, sname from table
。如果你不需要日期,那么这将是有效的,不会重复。
答案 1 :(得分:0)
试试这个
Select Max(ID),FName,sName,Max(Date)
FROM Table1
Where Date > 'SomeDate' And Date < 'SomeDate'
Group By FName,sName
答案 2 :(得分:0)
请勿尝试使用BETWEEN
SELECT DISTINCT ID,FName,sName,Date
FROM Table1
WHERE Date BETWEEN 'Date1' And 'Date2'
<强>更新强>
由于上述问题中有两个不同的日期和ID,您应该使用分组。这给你:
SELECT MIN(ID),FName,sName, MIN(Date)
FROM Table1
WHERE Date BETWEEN 'Date1' And 'Date2'
ORDER BY ID
GROUP BY FName,sName
DISTINCT
无效,因为每条记录都有不同的ID和日期。
上面的查询将为您提供第一个出现的ID。您可以将ORDER BY
更改为日期以获得最早的日期。或者您想要最新版本,然后使用MAX
代替MIN
,并将ORDER BY
与DESC
一起使用。