Я хочу проверить дублирующую проверку идентификатора на сервере sql, чтобы отображалась сетка проверки номер строки, сообщение проверки и повторяющийся идентификатор с сервера sql
Я не могу понять, как я могу это сделать?
Помощь очень ценится
Создать таблицу
CREATE TEMPORARY TABLE IF NOT EXISTS Tbl_Student
(RowID INT PRIMARY KEY auto_increment, StudentID BIGINT);
Вставить записи
Insert into Tbl_Student(RowID,StudentID) values (1,101)
Insert into Tbl_Student(RowID,StudentID) values (2,102)
Insert into Tbl_Student(RowID,StudentID) values (3,101)
Insert into Tbl_Student(RowID,StudentID) values (4,102)
Insert into Tbl_Student(RowID,StudentID) values (5,103)
Пожалуйста, поделитесь, если есть какое-либо решение
Спасибо
@GordonLinoff, если есть какое-либо доступное решение, вы можете поделиться синтаксисом кода сервера sql
Никакая профилактика здесь не применима, я должен отображать сообщение проверки только для studentId
в твоем образце 101 не продублировано.. экспалин лучше
Возможный дубликат Поиск повторяющихся значений в таблице SQL
Вот код T-SQL, вам может понадобиться преобразовать его в формат MySql:
Select * from(
Select RowId, Count(*) Over(Partition By StudentId Order By RowId) as Cnt From [YourTable]
) as K
Where Cnt>1
Вы также можете использовать агрегатную функцию Row_Number
или Count
для достижения того же результата.
Вот множество решений MySql для этой проблемы:
Чтобы отобразить дубликаты, я бы сделал:
select
RowID,
concat('Student ', StudentID, ' is duplicate') as StudentID
from Tbl_Student where StudentID in (
select StudentID from Tbl_Student group by StudentID having count(*) > 1
)
Попробуйте следующий запрос,
SELECT RowID, CONCAT('StudentID ',StudentID, ' is Duplicate) AS Error FROM Tbl_Student WHERE StudentID IN (SELECT StudentID FROM Tbl_Student GROUP BY StudentID HAVING COUNT(*) > 1)
Вы можете использовать соединение с suquery, имеющим количество идентификаторов струндетов > 1.
select id, student_id, concat('Stundent id' , student_id, ' is duplicated')
from my_table m
inner join (
select student_id
from my_table
group by student_id
having count(*) > 1
) t on t.student_id = m.student_id
Это синтаксис mysql