需要一些关于sql

时间:2016-05-08 11:54:21

标签: sql

我需要以下帮助或建议:

我有一个包含2列的表。

=================================
ID           Name
=================================
=================================
1            Denzel
=================================
2            Frozen
=================================
3            Lammer
=================================
4            James
=================================
5            James
=================================
6            Lolipop
=================================

正如您所见,“James”具有相同的名称但ID不同。 我的问题是什么是获得“詹姆斯”的最佳方式也是ID 4。

我应该使用比较还是??

更新!!

谢谢你的帮助。

我尝试了下面的代码。但我确实收到了错误。

Dim shape As String = ofd.FileName
Dim fi As New IO.FileInfo(shape)
Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=dBase IV;Data Source='" _
& fi.DirectoryName & "'")
cn.Open()
Dim cmd As New OleDbCommand("select min(id) as materialid,material from Coverage group by material having count(*) > 1", cn)
'Manual change
'Dim cmd As New OleDb.OleDbCommand("Update Coverage set materialid=" & TextBox2.Text & " Where materialid=" & TextBox3.Text & "", cn)
cmd.ExecuteNonQuery()
cmd.Dispose()
cn.Close()

但我收到以下错误:

缺少一个或多个必需参数的值。

我缺少什么?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

name分组。然后像count()这样的聚合函数适用于每个组,而不是整个表。有了它,您可以检查多次出现的名称。

select min(id) as id,
       name
from your_table
group by name
having count(*) > 1

答案 1 :(得分:0)

您可以使用Rank()来获得结果。

select RANK() over(Order by Name) as ID,Name from TABLENAME

有关于Rank()的一些信息

https://msdn.microsoft.com/en-in/library/ms176102.aspx