Учитывая эту базу данных схему:SQL: Есть ли разница между этими двумя запросами
Есть ли разница между следующими двумя запросами:
SELECT NAME, MIN(MOVIEYEAR - YEAR(BIRTHDATE)) AS DEBUT_AGE
FROM STARSIN
JOIN MOVIESTAR ON STARNAME = NAME
GROUP BY NAME;
SELECT NAME, MOVIEYEAR - YEAR(BIRTHDATE) AS DEBUT_AGE
FROM MOVIESTAR
LEFT JOIN STARSIN ON NAME = STARNAME
WHERE MOVIEYEAR IS NOT NULL
GROUP BY NAME
HAVING MIN(MOVIEYEAR);
Я думаю, что они вернутся тот же результат, я ошибаюсь?
Второй не должен компилироваться - вам нужно что-то после того, как «HAVING MIN (MOVIEYEAR) 'like' HAVING MIN (MOVIEYEAR) = '2010'' –
Почему бы вам не запустить их и посмотреть, какой результат или план выполнения он генерирует? – Rahul
Вы пытались запустить оба, чтобы посмотреть, вернут ли они те же результаты? Какой смысл превращать «INNER JOIN» в «LEFT JOIN» с нулевой проверкой? –