我有一個包含完全定義的項目的表,並且第二個表具有潛在的模糊/貪婪命令,因爲NULL需要此參數的所有可用值。MySQL:在JOIN語句中使用NULL作爲通配符
items
+-----------------------+
| item_id | color | size |
|---------+-------+------|
| 1 | blue | 8 |
| 2 | red | 6 |
| 3 | green | 7 |
| 4 | black | 6 |
+------------------------+
orders
+-------------------------+
| order_id | color | size |
|----------+-------+------|
| 1 | red | 6 |
| 2 | green | 8 |
| 3 | NULL | 6 |
| 4 | blue | NULL |
| 5 | NULL | NULL |
+-------------------------+
是否有一種有效的方式來生成填寫所有訂單所需的項目的完整列表?
+--------------------+
| order_id | item_id |
|----------+---------|
| 1 | 2 |
| 3 | 2 |
| 3 | 4 |
| 4 | 1 |
| 5 | 1 |
| 5 | 2 |
| 5 | 3 |
| 5 | 4 |
+--------------------+
在我看來,像一個INNER JOIN應該能夠做到這一點,但這樣的事情顯然沒有考慮NULL值作爲貪婪的通配符在訂單的可能性表:
SELECT order_id, item_id
FROM orders
INNER JOIN items ON orders.color = items.color AND orders.size = items.size
有沒有想法?
完美,謝謝! – user1895878