Соответствуют ли следующие операторы выбора SQL92? - PullRequest
0 голосов
/ 20 февраля 2009

Соответствуют ли следующие операторы выбора SQL92?

SELECT table1.id, table2.id,*  
FROM table1, table2  
WHERE table1.id = table2.id  

SELECT table1.Num, table2.id,*  
FROM table1, table2  
WHERE table1.Num = table2.id  

Ответы [ 4 ]

2 голосов
/ 20 февраля 2009

Вслед за StingyJack ...

SELECT 
    table1.id, 
    table2.id,
    * 
FROM
    table1
    INNER JOIN 
    table2 ON table1.id = table2.id
WHERE
    table1.column = 'bob'

SELECT table1.id, table2.id,* FROM table1, table2 WHERE table1.id = table2.id and table1.column = 'bob'

Где JOIN? Где фильтр?

JOIN также требует некоторой дисциплины и базовой проверки: легче избежать перекрестного соединения или частичного перекрестного соединения

1 голос
/ 21 февраля 2009

Да, показанные вами запросы используют синтаксис, совместимый с SQL92. Моя копия Джима Мелтона и Алана Р. Саймона « Понимание нового SQL: Полное руководство » подтверждает это.

SQL92 по-прежнему поддерживает объединения с использованием синтаксиса запятой для обратной совместимости с SQL89. Насколько я знаю, все реализации SQL поддерживают как синтаксис запятых, так и синтаксические объединения JOIN.

В большинстве случаев реализация SQL знает, как их оптимизировать, чтобы они были идентичны по семантике (то есть они давали одинаковый результат) и производительности.

1 голос
/ 20 февраля 2009

К сожалению, я верю, что это так, но этот синтаксис объединения труднее читать и поддерживать.

Я знаю, что в MSSQL нет разницы в производительности между этими двумя методами соединения, но какой из них легче понять?

SELECT table1.id, table2.id,* 
FROM table1, table2 
WHERE table1.id = table2.id


SELECT 
 table1.id, 
 table2.id,
 * 
FROM table1
   INNER JOIN table2 
     ON table1.id = table2.id
1 голос
/ 20 февраля 2009

Я могу ошибаться, но я понимаю, что соглашение SQL92 состоит в объединении таблиц с помощью оператора JOIN (например, FROM table1 INNER JOIN table2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...