首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MYSQL选择在一个或多个记录中列值不为空的惟一id

MYSQL选择在一个或多个记录中列值不为空的惟一id
EN

Stack Overflow用户
提问于 2013-11-08 02:38:22
回答 1查看 2.3K关注 0票数 1

背景

我有一个包含客户购买记录的表,该表有一个名为coupon_id的列,如果客户在购买期间没有使用优惠券,则此列为null,如果客户使用优惠券id,则为空。该表可以包含单个客户的多个购买,客户可能在一次购买中使用优惠券,而不是在另一次购买期间使用优惠券。

代码语言:javascript
运行
复制
+-------+-------------+-----------+-------------+
| ID    | customer_id | coupon_id | other_data  | 
+-------+-------------+-----------+-------------+
| 0     |  1          | 32        | ...         |
| 1     |  1          | null      | ...         |
| 2     |  1          | null      | ...         |
| 3     |  1          | null      | ...         |
| 4     |  2          | null      | ...         |
| 5     |  3          | 11        | ...         |
| 6     |  4          | null      | ...         |
| 7     |  4          | null      | ...         |
+-------+-------------+-----------+-------------+ 

问题

我想得到customer_id的所有客户谁从来没有作出购买使用优惠券。我正在使用的当前查询仍然是返回使用优惠券购买的客户。

代码语言:javascript
运行
复制
SELECT customer_id from checkouts c 
WHERE code_id IS NULL
GROUP BY customer_id 
ORDER BY customer_id asc

问题

如何为从未使用优惠券购买过的顾客选择独特的身份证列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-08 02:42:58

使用WHERE NOT EXISTS和子查询。类似于:

代码语言:javascript
运行
复制
    SELECT DISTINCT
        customer_id
    FROM checkouts c
    WHERE NOT EXISTS (
        SELECT *
        FROM checkouts
        WHERE
            checkouts.customer_id = c.customer_id
            AND coupon_id IS NOT NULL
    ) cc;

不完全确定这是否是正确的MySQL语法,但这是它的要点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19850633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档