Символ SQL-запроса "* =" - PullRequest
       9

Символ SQL-запроса "* ="

1 голос
/ 29 марта 2011

Что означает символ "*=" в выражении SELECT? Как это влияет на производительность? Можем ли мы заменить его на JOINS?

Спасибо STR

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

В некоторых системах баз данных,

SELECT ... FROM a, b WHERE a.field1 *= b.field2

- это старый синтаксис для ЛЕВОГО НАРУЖНОГО СОЕДИНЕНИЯ:

SELECT ... FROM a LEFT JOIN b ON a.field1 = b.field2

Microsoft SQL Server, например, считает синтаксис * = устаревшим с версии 2005 .

Так что да, вы можете заменить *= на JOIN. На самом деле, вы должны . (Я сомневаюсь, что это каким-либо образом влияет на производительность, но ваши запросы могут перестать работать в более новых версиях вашего механизма базы данных.)

0 голосов
/ 29 марта 2011

В некоторых реализациях SQL оператор SELECT с оператором присваивания (=) может использоваться для создания взаимосвязи между заголовком столбца и выражением, определяющим значения для столбца.

Так что пример может быть:

SELECT name = 'renamed_column_name'
FROM users

Подробнее:

К сожалению, оператор = может означать как присвоение, так и равенство.

Для назначения:

DECLARE @Counter INT;
SET @Counter = 1;

Для равенства:

Оператор равенства = утверждает, что левая сторона должна равняться правой стороне.

Может означать, что значение должно равняться результату, возвращенному подзапросом, или переменная должна равняться литералу, независимо от регистра ... a = b означает, что a и b должны иметь одинаковое значение.

SELECT * FROM users LEFT JOIN posts ON users.id = posts.user_id
...