productID を主キーとする product というテーブルがあります。次に、productID と processID を格納する productProcess というテーブルがあります。そのため、productProcess テーブルにインスタンスがないすべての productID を検索する必要があります。現在、2 つのクエリを最初にすべての製品を実行し、2 つ目は productProcess からの productID であり、存在しないものが選択されています。これには他のメカニズムがありますか?
質問する
58 次
3 に答える
2
はいあります。使用するLEFT JOIN
SELECT a.* // this will get all columns from product table.
FROM product a
LEFT JOIN productProcess b
ON a.productID = b.productID
WHERE b.productID IS NULL
結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。
より速くするためのもう1つのヒントはproductID
、テーブルproductProcess
の外部キーを設定することです。
于 2013-03-10T16:59:42.263 に答える
2
product.productIDを NULL にすることはできないと仮定します。
SELECT product.productID
FROM product
LEFT JOIN productProcess
ON productProcess.productID = product.productID
WHERE productProcess.productID IS NULL
別のオプションはWHERE NOT EXIST
次のとおりです。
SELECT product.productID
FROM product
WHERE NOT EXISTS (
SELECT productID FROM productProcess
WHERE productProcess.productID = product.productId
)
于 2013-03-10T17:00:06.410 に答える
1
左結合を使用できます。左結合を使用できる場合、結果は、products および ProductsProcess に関連するすべての製品になります。
SELECT p.*
FROM (product p LEFT JOIN productProcess pp ON a.productID = b.productID)
WHERE pp.productID IS NULL
于 2013-03-10T17:03:39.937 に答える