Что означает = * означает?

Я пытаюсь отслеживать некоторые SQL в Microsoft Server. Я наткнулся на соединение, которое использует незнакомое мне соглашение. Что означает « =* »?

 WHERE table1.yr =* table2.yr -1 

Эта:

 WHERE t.column =* s.column 

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

Ссылка: SQL Server 2005 Outer Join Gotcha

Я считаю, что это старый синтаксис, указывающий внешнее условие соединения из таблицы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 

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

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

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

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

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

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

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

 из
 table1 left external join table2 на table1.yr = table2.yr - 1
 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 

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

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

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

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

 WHERE table1.yr =* table2.yr -1 

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

  • sql-запрос для шаблона ниже
  • Вопросы об активной георепликации (и о том, как она взаимодействует с локальным, внутрицентровым, избыточным)
  • Как передать базу данных ASP.NET MVC из LocalDb в SQL Server?
  • Самый эффективный способ поддержки «набора» в SQL Server 2008?
  • обновить очередь баз данных с блокировкой и упорядоченным выходом
  • Получение SqlException, ошибка тайм-аута
  • Лучшая практика архивирования огромной таблицы из более чем 1 000 000 000 строк
  • Объединение строк в T-SQL с помощью команды STUFF или CONCAT
  • Java с MS SQL?
  • SQL Выберите только записи без дубликатов
  • Переписать запрос T-SQL, содержащий подзапросы, с использованием объединений
  • Давайте будем гением компьютера.