2014-01-09 3 views
-2

У меня очень сомнительный вопрос. Предположим, что у меня есть 2 таблицы, которые имеют 10 строк и B, которые имеют 100 строк. Я знаю, что когда я введу SELECT * FROM A, B, тогда результат будет 1000 строк.MySQL SELECT * из 2 таблиц

Мой вопрос: почему?

Может кто-нибудь, пожалуйста, объясните мне это?

+0

Что вы пытаетесь делать? UNION? – h2ooooooo

+4

, поскольку он выполняет декартовое произведение между этими таблицами – Lamak

+0

каждая запись из первой таблицы связана с каждой записью из второй таблицы. Сколько яблок в 100 корзинах, если каждая корзина содержит 10 яблок? – wxyz

ответ

5

Потому что это cross join, что дает вам cartesian product между двумя таблицами.

Википедия:

CROSS JOIN возвращает декартово произведение строк из таблиц в присоединиться. Другими словами, он будет производить строки, которые сочетают в себе каждую строку из первой таблицы с каждой строкой из второй таблицы

Таким образом, в этом случае, 10 * 100 = (угадать, что) 1000.

+0

Спасибо за ваш ответ и ссылки! –

0

Если вы хотите видеть 110 resord в результате вы должны использовать UNION для объединения результатов из двух таблиц:

(SELECT * from A) 
UNION 
(SELECT * from B) 
+1

Вопрос "почему" ... –

0

вы должны интегрировать связь с некоторыми WHERE, для редактирования этого выходного

Смежные вопросы