MySQL: быстрое разбиение типов объединений

Мне бы хотелось быстро разбить типы соединений MySQL. Я знаю об этом, остальное я не уверен, что они означают.

  • разделенный запятой (что именно это сокращает?): SELECT * FROM a, b WHERE b.id = a.beeId AND ...
  • показать информацию из a, даже если совпадений нет в b: SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...

Я видел другие объединения, но хочу знать, что их отличает, что есть INNER/OUTER, добавляет LEFT изменение вещей.

Я уже знаю, как работают соединения, я просто хочу знать, есть ли другие типы объединений или просто разные способы получить тот же результат.

Ответ 2

Основываясь на вашем комментарии, простые определения каждого из них лучше всего найти на W3Schools Первая строка каждого типа дает краткое описание типа соединения

  • JOIN: Возвращает строки, если в обеих таблицах имеется хотя бы одно совпадение.
  • LEFT JOIN: возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений
  • RIGHT JOIN: вернуть все строки из правой таблицы, даже если в левой таблице нет совпадений
  • FULL JOIN: вернуть строки, когда есть совпадение в одной из таблиц

END EDIT

Вкратце, представленный запятой пример, который вы указали из

SELECT * FROM a, b WHERE b.id = a.beeId AND ...

выбирает каждую запись из таблиц a и b с запятыми, разделяющими таблицы, это может использоваться также в столбцах типа

SELECT a.beeName,b.* FROM a, b WHERE b.id = a.beeId AND ...

Затем он получает проинструктированную информацию в строке, где столбец b.id и столбец a.beeId имеют совпадение в вашем примере. Таким образом, в вашем примере он получит всю информацию из таблиц a и b, где b.id равно a.beeId. В моем примере он получит всю информацию из таблицы b и только информацию из столбца a.beeName, когда b.id равно a.beeId. Обратите внимание, что есть также предложение AND, это поможет уточнить ваши результаты.

В некоторых простых руководствах и пояснениях к соединениям mySQL и левым соединениям обращайтесь к учебникам Tizag mySQL. Вы также можете проверить веб-сайт Keith J. Brown для получения дополнительной информации о присоединениях, что тоже неплохо.

Надеюсь, это поможет вам.

Ответ 3

Полное Outer-соединение не существует в mysql, вам может потребоваться комбинация левого и правого соединений.