Что делает = * средний?

Вы хотите java.text. DecimalFormat

58
задан Cole Johnson 29 April 2013 в 02:32
поделиться

11 ответов

Это:

WHERE t.column =* s.column

... старый TSQL (до SQL Server 2005) синтаксис внешнего соединения и не является ANSI JOIN.

Ссылка: Ошибка внешнего соединения SQL Server 2005

71
ответ дан 24 November 2019 в 18:48
поделиться

Я считаю, что это старый синтаксис, указывающий на условие внешнего соединения от таблицы1 к таблице2

Старый стиль:

SELECT * FROM table1, table2
WHERE table1.yr =* table2.yr -1

Новый стиль (SQL92):

SELECT * FROM table2 
LEFT OUTER JOIN table1 ON table1.yr = table2.yr - 1
25
ответ дан 24 November 2019 в 18:48
поделиться

Это синтаксис старого стиля для выражения объединений

16
ответ дан 24 November 2019 в 18:48
поделиться

Это означает, что код необходимо немедленно заменить! Это соединение стилей должно быть правильным соединением. К сожалению, это иногда интерпретируется как перекрестное соединение, поэтому результаты использования этого соединения могут быть неверными. Кроме того, этот синтаксис устарел и не может использоваться в следующей версии сервера SQl.

11
ответ дан 24 November 2019 в 18:48
поделиться

Это синтаксис ANSI SQL 1989 для RIGHT OUTER JOIN, где * = будет LEFT OUTER JOIN.

Также следует отметить, что использование синтаксиса соединения в предложении WHERE не рекомендуется в SQL 2008. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== Своевременная статья по этому поводу.

7
ответ дан 24 November 2019 в 18:48
поделиться

Это старый стиль объединений, который объявлен устаревшим в ANSI SQL92. Новый синтаксис использует INNER и OUTER JOIN, которые объединяют таблицы на основе выражений, а не равенства

2
ответ дан 24 November 2019 в 18:48
поделиться

А ??? внешнее соединение указывается с помощью символа = * вместо = в предложении WHERE.

1
ответ дан 24 November 2019 в 18:48
поделиться

да, это еще один синтаксис для левого внешнего соединения

from
table1 left outer join table2 on table1.yr = table2.yr - 1
0
ответ дан 24 November 2019 в 18:48
поделиться
SELECT *
FROM table1, table2
WHERE table1.yr =* table2.yr -1

Означает то же самое, что и следующее:

  SELECT *
  FROM
    table2
    LEFT OUTER JOIN
    table1
    ON table1.yr = (table2.yr - 1)

Синтаксис * считается устаревшим и не соответствует стандартам ANSI.

Oracle имеет аналогичную конструкцию ] вот так:

  WHERE table1.yr (+)= table2.yr
0
ответ дан 24 November 2019 в 18:48
поделиться

Здесь много глупых ответов. Вы не указали предложение FROM, поэтому невозможно определить, представляет ли ваш * = внешнее соединение LEFT или RIGHT.

WHERE table1.yr =* table2.yr -1

- это наверняка старый синтаксис для внешнего соединения. Но любой, кто утверждает, что знает, является ли это внешнее соединение LEFT или RIGHT, ошибается. Это зависит от порядка, в котором table1 и table2 названы в предложении FROM, и это не указано.

-1
ответ дан 24 November 2019 в 18:48
поделиться

Чтобы быть простым и понятным. Это оператор внешнего соединения SQL-92 ( подробнее )

Не используйте его, это очень старая школа, но он похож на LEFT JOIN и RIGHT JOIN. Все, что он делает, это указывает, какая сторона соединения является "родительской", поэтому строки с этой стороны будут рассматриваться в первую очередь.

Если вы попытаетесь запустить эту функцию на SQL 2005, она выдаст ошибку, говоря, что вам нужно запустить ее в режиме совместимости.

0
ответ дан 24 November 2019 в 18:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: