Table:?Product
+--------------+---------+
| Column Name ?| Type ? ?|
+--------------+---------+
| product_id ? | int ? ? |
| product_name | varchar |
| unit_price ? | int ? ? |
+--------------+---------+
product_id 是這個表的主鍵
Table:?Sales
+-------------+---------+
| Column Name | Type ? ?|
+-------------+---------+
| seller_id ? | int ? ? |
| product_id ?| int ? ? |
| buyer_id ? ?| int ? ? |
| sale_date ? | date ? ?|
| quantity ? ?| int ? ? |
| price ? ? ? | int ? ? |
+------ ------+---------+
這個表沒有主鍵,它可以有重復的行.
product_id 是 Product 表的外鍵.
?
編寫一個SQL查詢,報告2019年春季才售出的產品。即僅在2019-01-01至2019-03-31(含)之間出售的商品。
查詢結果格式如下所示:
Product table:
+------------+--------------+------------+
| product_id | product_name | unit_price |
+------------+--------------+------------+
| 1 ? ? ? ? ?| S8 ? ? ? ? ? | 1000 ? ? ? |
| 2 ? ? ? ? ?| G4 ? ? ? ? ? | 800 ? ? ? ?|
| 3 ? ? ? ? ?| iPhone ? ? ? | 1400 ? ? ? |
+------------+--------------+------------+
Sales table:
+-----------+------------+----------+------------+----------+-------+
| seller_id | product_id | buyer_id | sale_date ?| quantity | price |
+-----------+------------+----------+------------+----------+-------+
| 1 ? ? ? ? | 1 ? ? ? ? ?| 1 ? ? ? ?| 2019-01-21 | 2 ? ? ? ?| 2000 ?|
| 1 ? ? ? ? | 2 ? ? ? ? ?| 2 ? ? ? ?| 2019-02-17 | 1 ? ? ? ?| 800 ? |
| 2 ? ? ? ? | 2 ? ? ? ? ?| 3 ? ? ? ?| 2019-06-02 | 1 ? ? ? ?| 800 ? |
| 3 ? ? ? ? | 3 ? ? ? ? ?| 4 ? ? ? ?| 2019-05-13 | 2 ? ? ? ?| 2800 ?|
+-----------+------------+----------+------------+----------+-------+
Result table:
+-------------+--------------+
| product_id ?| product_name |
+-------------+--------------+
| 1 ? ? ? ? ? | S8 ? ? ? ? ? |
+-------------+--------------+
id為1的產品僅在2019年春季銷售,其他兩個產品在之后銷售。
思路:查出不符合要求的名單,判斷每個商品是否在名單即可。
select product_id,product_name
from Product
where product_id not in (select product_id from Sales where sale_date>'2019-03-31' or sale_date<'2019-01-01');
?