У меня есть вопрос относительно Inner Joins в MySQl. Из моего ограниченного понимания MySQL, таблица результатов, созданная внутренним соединением, содержит только строки, которые существовали в обеих таблицах. То есть, например, если таблица 1 содержит строку для Joe и строку для Sally, а таблица2 содержит только строку для Sally, внутреннее объединение будет содержать только одну строку: строку для Sally.MySQL Inner Join Результаты
Например:
В базе данных, которая содержит 2 таблицы,
Таблица 1 (Домашнее животное)
petName petType
Unicorn Horse
Pegasus Horse
Lion Cat
Таблица 2 (цвет)
petName petColor
Unicorn white
Unicorn silver
Fish Gold
Используя запрос
SELECT * FROM Pet,Color WHERE Pet.petName = Color.petName
Почему результат запроса?
petName petType petName petColor
Unicorn Horse Unicorn white
Unicorn Horse Unicorn silver
Почему там «Unicorn лошадь» во втором ряду, когда есть только один «Unicorn Лошадь» в таблице 1? Был бы я прав, говоря, что MySQL соответствует термину «Единорог» в таблице 1 и таблице 2 и перечисляет строки в обеих таблицах, в которых есть слово «Единорог». Однако так как это привело бы к
petName petType petName petColor
Unicorn Horse Unicorn white
< NULL > Unicorn silver
MySQL автоматически заменяет значение с помощью строки «Unicorn Лошадь» в таблице один, так как он соответствует «Unicorn» ключевое слово, используемое в запросе?
Если да, то в чем бы заключалось это, поскольку MySQL только давал мне избыточные данные во второй строке, для которой я не нужен? Кроме того, я был бы в состоянии работать вокруг этого, используя
SELECT * FROM Pet LEFT JOIN Color
ON Pet.petName=Color.petName
WHERE Pet.petName="Unicorn"?
Я наткнулся на этот пример в PHP & MYSQL для чайников и никак не мог получить его. Я был бы признателен, если бы какая-то душа могла это прояснить.
Выполняет SELECT * FROM Pet WHERE EXISTS (SELECT * FROM Color, где Color.petName = Pet.petName) перевести на простой английский, в «выбрать строки (строки) в таблице Pet, где данные в столбце petName соответствуют данным в столбце petName в таблице Цвет "? Я спрашиваю об этом, потому что я все еще не слишком уверен в синтаксисе для MySQL. Благодаря! –
@ Ken-- обновил ответ, чтобы включить объяснение. –