7

デカルト積を返すように見えるいくつかの結合をデバッグしようとして、同等のON条件をselectに入力しました。

MySQLでは

select * 
from table 
where columnname

入力したかのように動作するようですwhere columname is not null。結合では、入力on table.columnnameは受け入れられますが、多くの行が返されます。MySQLは、私がそれを修正すれば正しいことをしますon table1.column=table2.columnが、確かに私の最初のバージョンは正しくなく、違法でした。

4

2 に答える 2

2

あなたが話しているコンテキスト、WHERE句とON結合の句は、単に式を受け入れます。

SELECT ...
FROM table1 JOIN table2 ON <expr>
WHERE <expr>

式には次のような比較演算子を含めることができます=が、式は単一の列または単一の定数値のように単純にすることもできます。

式を受け入れる別のコンテキストである選択リストと比較してください。

SELECT <expr>, <expr>, <expr>

このコンテキストでは、単一の列を式として使用するのが普通です。

于 2013-03-13T16:45:42.017 に答える
1

ほとんどのプログラミング言語は、null、0、''、false 以外のすべての値を true と見なします。ながら (1); 1,2,'a',true などを与えるかどうかに関係なく、無限ループです。これはデフォルトで期待される動作であり、同様の where 句をよく使用しています

于 2013-03-13T16:39:01.627 に答える