Programing

= *는 무엇을 의미합니까?

crosscheck 2020. 12. 11. 07:50
반응형

= *는 무엇을 의미합니까?


Microsoft Server에서 일부 SQL을 추적하려고합니다. 익숙하지 않은 컨벤션을 사용하는 조인을 발견했습니다. " =*"은 무슨 뜻입니까?

WHERE table1.yr =* table2.yr -1

이:

WHERE t.column =* s.column

... 이전 TSQL (SQL Server 2005 이전) 외부 조인 구문이며 ANSI JOIN이 아닙니다.

참조 : SQL Server 2005 외부 조인 Gotcha


나는 그것이 table1에서 table2 로의 외부 조인 조건을 나타내는 오래된 구문이라고 생각합니다.

오래된 스타일:

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

새 스타일 (SQL92) :

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

이것은 조인을 표현하기위한 구식 구문입니다.


코드를 즉시 교체해야 함을 의미합니다! 이 스타일 조인은 올바른 조인이어야합니다. 안타깝게도 때때로 교차 조인으로 해석되기 때문에이 조인을 사용한 결과가 정확하지 않을 수 있습니다. 또한이 구문은 더 이상 사용되지 않으며 SQl 서버의 다음 버전에서 사용할 수 없습니다.


이것이 RIGHT OUTER JOIN에 대한 ANSI SQL 1989 구문입니다. 여기서 * =는 LEFT OUTER JOIN입니다.

WHERE 절에 조인 구문을 넣는 것은 SQL 2008에서 더 이상 사용되지 않습니다. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== 이에 대한 적시 기사.


이것은 ANSI SQL92에서 더 이상 사용되지 않는 이전 스타일의 조인입니다. 새로운 구문은 동일성이 아닌 표현식을 기반으로 테이블을 조인하는 INNER 및 OUTER JOIN을 사용합니다.


ㅏ ??? 외부 조인은 WHERE 절에서 = 대신 = * 기호를 사용하여 지정됩니다.


네, 왼쪽 외부 조인에 대한 또 다른 구문입니다.

...에서
table1 왼쪽 외부 조인 table2 on 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

확실히 외부 조인에 대한 오래된 구문입니다. 그러나 그것이 LEFT 또는 RIGHT 외부 조인인지 알고 있다고 주장하는 사람은 착각합니다. FROM 절에서 table1과 table2의 이름이 지정되는 순서에 따라 다르며 제공되지 않습니다.

참고 URL : https://stackoverflow.com/questions/1428144/what-does-mean

반응형