SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL
Q: Что здесь происходит?
A: По идее мы выбираем все строки из
table1
и для каждой строки мы пытаемся найти строку вtable2
с тем же значением для столбцаname
. Если такой строки нет, мы просто оставим частьtable2
нашего результата пустым для этой строки. Затем мы ограничиваем наш выбор, выбирая только те строки в результате, где совпадающая строка не существует. Наконец, мы игнорируем все поля из нашего результата, кроме столбцаname
(тот, который мы уверены, что существует, изtable1
).Хотя это может быть не самый эффективный метод во всех случаях он должен работать в основном каждый движок базы данных, когда-либо пытающийся реализовать ANSI 92 SQL
Я понял, как решить эту проблему, добавив foreach в каждом раскрывающемся списке полей. Спасибо @HastaDhana за то, что нашли время ответить на мой вопрос:)