2012-06-07 1 views
1

Итак, я только что наткнулся на что-то интересное, и я не знаю, было ли это ответ ранее, поскольку я не знаю, как это называется. Допустим, у вас есть две таблицы; первая имеет одну строку, а вторая - две строки. Если вы запустите следующую Постулаты:SQL Statement Показать больше строк, чем таблица

SELECT t1.* 
FROM table1 t1, table2 t2 

возвращает две строки, и оба имеют одинаковое значение, но первая таблица имеет только одну строку! Почему это происходит? Я не думал, что другая таблица в разделе from изменила что-либо, если вы не изменили предложение select соответственно.

ответ

6

Вы выбираете cartesian product из двух таблиц.

Он будет возвращать COUNT(t1) * COUNT(t2) записей: все возможные комбинации записей от t1 с записями от t2.

ANSI Используя синтаксис, ваш запрос будет гласить:

SELECT t1.* 
FROM table1 t1 
CROSS JOIN 
     table2 t2 
+0

И здесь, я думал, что я обнаружил, что-то крутое. Спасибо за быстрый ответ и расчистили мое замешательство! –