SELECT 哪里...在...获得重复的 ID

SELECT WHERE...IN...OBTAINING DUPLICATED IDS

我有以下查询:

SELECT `id_customer`,`club`
FROM `customer`
WHERE `id_customer` IN (
2487,
2347,
2347
)
ORDER BY `id_customer` DESC;

我得到以下结果:

2487 -> Club A
2347 -> Club B

但我需要获得:

2487 -> Club A
2347 -> Club B
2347 -> Club B

因为我要将这些数据复制到 .csv 文件中。

你能帮帮我吗?

提前致谢。

这不起作用的原因是 IN 子句不单独匹配每个指定的条件。使用 2347 两次不会导致该行被选中两次。

实现此目的的一种方法是使用临时 table 来保存您的客户标准,然后加入该标准以获得结果:

CREATE TEMPORARY TABLE customerFilter (id_customer INT);

INSERT INTO customerFilter (id_customer) VALUES (2487), (2347), (2347);

SELECT  c.id_customer,
        c.club
  FROM  customer c
    INNER JOIN customerFilter cf ON cf.id_customer = c.id_customer
  ORDER BY c.id_customer DESC;

DROP TABLE customerFilter;

这使用临时 table customerFilter 来指定您要为其检索客户的每个 ID。在这种情况下,因为使用了 INNER JOINcustomerFilter 中的每一行都将在 customer 中匹配一行,因此给出了您要查找的重复行。

输出:

2487   Club A
2347   Club B
2347   Club B