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 JOIN
,customerFilter
中的每一行都将在 customer
中匹配一行,因此给出了您要查找的重复行。
输出:
2487 Club A
2347 Club B
2347 Club B
我有以下查询:
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 JOIN
,customerFilter
中的每一行都将在 customer
中匹配一行,因此给出了您要查找的重复行。
输出:
2487 Club A
2347 Club B
2347 Club B