SQL-запрос для определения присутствия в таблице

#sql #database

#sql #База данных

Вопрос:

У меня есть идентификатор студента и несколько таблиц в моей базе данных для получения информации о студентах, так что при любом идентификаторе он присутствует только в одной таблице. Каждая таблица имеет атрибут Student id.

Учитывая идентификатор студента, как использовать SQL-запрос, чтобы определить, что в таблице есть информация о студенте с этим идентификатором студента?

Ответ №1:

    IF EXISTS(SELECT TOP 1 1 FROM table WHERE studentID = @input)
   BEGIN
      -- do stuff
   END
  

или немного менее причудливый

    IF EXISTS(SELECT TOP 1 studentID FROM table WHERE studentID = @input)
   BEGIN
      -- do stuff
   END
  

вы также можете создать поисковое представление / запрос. что-то вроде этого:

    SELECT sudentID, 'Table1' as Location
   FROM 'Table1'
   UNION ALL
   SELECT sudentID, 'Table2' as Location
   FROM 'Table2'
   UNION ALL
   SELECT sudentID, 'Table3' as Location
   FROM 'Table3'
   UNION ALL
   SELECT sudentID, 'Table4' as Location
   FROM 'Table4'
  

Затем запросите это представление для определения местоположения. Это может быть полезно, если вам нужно объединить

Ответ №2:

Я всего лишь новичок в MySQL, но я бы подошел к проблеме, выбрав * из каждой таблицы по очереди:

выберите * из table порядка по student_id ;

И затем для каждого student_id посмотрите, имеет ли какая-либо строка, возвращенная из этого выбора, этот student_id.

Да, это полностью грубая сила, и, без сомнения, существует множество более сложных и быстрых решений. Но именно так я бы сделал это на данном этапе моего путешествия по MySQL.

HTH. Требуются лучшие решения, и они очень приветствуются.