Mysql语言select嵌套语句_坚持使用mysql嵌套的select语句

在SQL中,用户需要构造一个查询来获取只购买了PRODUCT_ID为204(免费样品)而不购买任何PRODUCT_TYPE为'monthly_subscription'产品的客户。他们已经尝试了一个LEFT JOIN和子查询的组合,但需要进一步优化以达到预期结果。问题集中在排除同时购买了两种类型产品的客户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有三个表,我加入了一个select语句:

表CRM_CONTACTS结构:

CONTACTS_ID, CONTACTS_EMAIL

1 email@email.com

2 email2@email.com

表CRM_PRODUCTS结构:

PRODUCTS_ID, PRODUCTS_NAME, PRODUCTS_TYPE

204 Sample free_sample

205 beginners_1 monthly_subscription

206 beginners_2 monthly_subscription

表CRM_PRODUCTS_PURCHASE:

ID, CONTACTS_ID, PRODUCTS_ID

3 1 204

4 1 205

5 2 204

因此,客户当然可以购买多种产品 .

我想制作一个select语句,选择购买PRODUCT_ID 204(免费样品)的所有客户,但如果他们购买了PRODUCT_TYPE = monthly_subscription的产品,我不想在结果中使用它们 .

所以我想要的预期输出是与CONTACTS_ID 2的联系 .

我是sql语句的新手 . 这是我到目前为止所得到的:

SELECT CRM_PRODUCTS_PURCHASE.CONTACTS_ID,CRM_PRODUCTS_PURCHASE.PRODUCTS_ID, CRM_CONTACTS.CONTACTS_EMAIL, CRM_CONTACTS.CONTACTS_LANGUAGE

FROM CRM_PRODUCTS_PURCHASE

LEFT JOIN CRM_CONTACTS ON CRM_PRODUCTS_PURCHASE.CONTACTS_ID = CRM_CONTACTS.ID

LEFT JOIN CRM_PRODUCTS ON CRM_PRODUCTS_PURCHASE.PRODUCTS_ID = CRM_PRODUCTS.ID

WHERE CRM_PRODUCTS_PURCHASE.CONTACTS_ID IN

(SELECT CRM_CONTACTS.ID

FROM CRM_PRODUCTS_PURCHASE

LEFT JOIN CRM_CONTACTS ON CRM_PRODUCTS_PURCHASE.CONTACTS_ID = CRM_CONTACTS.ID

LEFT JOIN CRM_PRODUCTS ON CRM_PRODUCTS_PURCHASE.PRODUCTS_ID = CRM_PRODUCTS.ID

WHERE CRM_PRODUCTS_PURCHASE.PRODUCTS_ID = 204 AND

CRM_CONTACTS.CONTACTS_EMAIL!='' AND

NOT coalesce(CRM_CONTACTS.CONTACTS_DEACTIVATED,0)

GROUP BY CRM_CONTACTS.CONTACTS_EMAIL

ORDER BY CRM_CONTACTS.CONTACTS_LANGUAGE)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值