Ms sql 2000から取得し、MySqlクエリにプラグインしたクエリがあります。それは機能しませんでした、MySqlは* =演算子で窒息しました。この例では、person_nameという2つのvarchar列があります。
SELECT * FROM tbl1 a, tbl2 b
WHERE a.id = b.id
AND a.person_name *= b.person_name
他の言語では、myInt * = myTotalはmyInt * myInt = myTotalと読むこともできます。ただし、整数ではなくすべての文字を含むvarcharを使用しています。私はそれを次のように書きました:
AND a.person_name * a.person_name = b.person_name
出来上がり!うまくいったようです。誰かが何が起こっているのか説明できますか? * =演算子は、文字を同等の整数に変換していますか?そして、なぜこの演算子をWeb上のどこにも見つけられなかったのですか?
SQL 2000では、これはLEFT OUTERJOINとして使用されていました。
= *は右外部結合です
クエリは次のようになります。
SELECT
*
FROM
tbl1 a LEFT OUTER JOIN tbl2 b ON a.person_name = b.person_name
WHERE
a.id = b.id
述べたように ここ :
非標準の製品固有の構文とWHERE句を使用して外部結合を指定します。 * =演算子は左外部結合を指定するために使用され、= *演算子は右外部結合を指定するために使用されます。
MSSQLでは、WHERE句の* =規則は結合を示します。つまり、実際に表示されているのは、person_nameのtbl1とtbl2の間のLEFT OUTER JOINであり、tbl1のすべての値とtbl2の一致する値が返されます。