2016-05-08 2 views
-3

Мне нужна помощь или помощь со следующим:Нужна помощь по поводу sql

У меня есть одна таблица с 2 колонками.

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

Как вы можете видеть, «Джеймс» имеет одно и то же имя, но отличается от 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() 

Но я получаю следующее сообщение об ошибке:

значения для одного или нескольких требуемых параметров отсутствуют.

Что мне не хватает?

Заранее благодарю за помощь.

+0

Это не является SQL вопрос больше. Если у вас возникли проблемы с кодом VB, задайте отдельный вопрос –

ответ

1

Группа по name. Затем агрегированные функции, такие как count(), применяются к каждой группе, а не к полной таблице. С этим вы можете проверить имена, которые встречаются более одного раза.

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

См. Мое обновление в разделе, пожалуйста, –

0

Вы можете использовать Rank() для получения результата.

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

Есть некоторая информация о Rank()

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

+0

Если OP использует, например, SQL-Server ... –

+0

согласен! да для сервера sql. – ViZ

Смежные вопросы