首页 > 解决方案 > 如何返回符合 1+ 行条件的不同值?

问题描述

T1订单

ID       CID      STATUS    COUNTRY
01       1        1         3
02       2        7         NULL
03       1        1         2
04       4        NULL      -1
05       6        -1        3
06       1        3         2
07       4        2         4

我需要找到所有具有 STATUS = '1' 且指定了 CONTRY 的订单的 CID(客户 ID)。从上面的数据集中 CID 1 应该返回(CID 1 有多个订单,但我只需要返回符合条件的 CID 至少在一个订单中,而不是他的所有订单)

我试过这个:

SELECT DISTINCT CID
FROM ORDERS
WHERE Status = '1' AND CONTRY IS NOT NULL AND COUNTRY != -1

但它根本不起作用。

标签: mysqlsql

解决方案


对我来说很好。只是多加注意...

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,cid INT NOT NULL
,status INT NULL
,country INT NULL
);

INSERT INTO my_table VALUES
(1 ,      1   ,     1      ,   3),
(2 ,      2   ,     7      ,   NULL),
(3 ,      1   ,     1      ,   2),
(4 ,      4   ,     NULL   ,   -1),
(5 ,      6   ,     -1     ,   3),
(6 ,      1   ,     3      ,   2),
(7 ,      4   ,     2      ,   4);

SELECT DISTINCT cid FROM my_table WHERE status = 1 AND country != -1;
+-----+
| cid |
+-----+
|   1 |
+-----+

推荐阅读