ПРИМЕЧАНИЕ. Отвечает на оригинальную версию вопроса.
Во-первых, не используйте NATURAL JOIN
.Это мерзость, потому что она не использует должным образом объявленные отношения внешнего ключа.Он просто использует столбцы с одинаковыми именами, что может привести к ошибочным результатам.
Во-вторых, запрос синтаксически некорректен по двум причинам.Во-первых, "Red"
является ссылкой на столбец , а не на строковое значение.Есть ли в таблице столбец с именем "Red"
.Вторая причина заключается в том, что у вас есть самостоятельное соединение, поэтому ROW1
неоднозначно.
Это поднимает большую проблему.Ваш запрос в принципе не имеет никакого смысла.Вы присоединяете таблицу к себе, возвращая дубликаты столбцов.Каковы результаты?Довольно неопределенно:
- Если какой-либо столбец содержит значение
NULL
, строки не возвращаются. - Если все строки являются дубликатами (без значений
NULL
), товы получите результирующий набор с N ^ 2 строками и дублирующимися столбцами, где N - это количество строк в таблице.
Я не могу придумать какое-либо использование для запроса.Я не вижу смысла пытаться оптимизировать его.
Если у вас есть реальный запрос, который вы хотите обсудить, я бы предложил вам задать другой вопрос.