我刚刚开始学习MYSQL,尽管我非常擅长联接,但子查询存在很多问题。因此,我决定练习更多。我想查找过去下过订单的客户及其ID。商品的价格必须为$ 6.5或更高。使用联接这就是我的方法:
SELECT
CUSTOMER_TBL.CUST_ID
, CUST_NAME
FROM
CUSTOMER_TBL
INNER JOIN ORDERS_TBL
ON ORDERS_TBL.CUST_ID = CUSTOMER_TBL.CUST_ID
INNER JOIN PRODUCTS_TBL
ON ORDERS_TBL.PROD_ID = PRODUCTS_TBL.PROD_ID
WHERE PRODUCTS_TBL.COST > 6.5
这是我使用子查询完成的方法。
SELECT CUSTOMER_TBL.CUST_ID
, CUST_NAME
FROM CUSTOMER_TBL
WHERE
EXISTS (
SELECT *
FROM ORDERS_TBL
WHERE ORDERS_TBL.CUST_ID = CUSTOMER_TBL.CUST_ID
)
如您所见,我开始只包括那些下订单的人。但是我无法弄清其余的东西。的订单,只有那些高于$ 6.5的订单
SELECT CUST_ID, CUST_NAME FROM CUSTOMER_TABLE
WHERE CUST_ID IN
(SELECT CUST_ID FROM ORDERS_TBL
WHERE PROD_ID IN
(SELECT PROD_ID FROM PRODUCTS_TBL
WHERE COST > 6.5))
这可能对您有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句