如何从几个相同的值中得到一个值?

How to get one value from several identical ones?

例如,我的数据库中有这样的记录:

product_id
------------------------------------
887349c7-699e-4792-adde-3a44acd2d768
887349c7-699e-4792-adde-3a44acd2d768
887349c7-699e-4792-adde-3a44acd2d768
ecdcf200-6bc0-4b67-b47a-5946a1ab1dcf
ecdcf200-6bc0-4b67-b47a-5946a1ab1dcf
01a5419d-aaf8-4524-99ce-9bf5c1836823
01a5419d-aaf8-4524-99ce-9bf5c1836823

我怎么能得到(使用MySQLKnex.js语法)每个product_id,但只有1个,因为我有副本(没关系,这是必须的):

product_id
------------------------------------
887349c7-699e-4792-adde-3a44acd2d768
ecdcf200-6bc0-4b67-b47a-5946a1ab1dcf
01a5419d-aaf8-4524-99ce-9bf5c1836823

SELECT DISTINCT 语句仅用于 return 不同(不同)的值。

在table中,一列往往包含很多重复值;有时您只想列出不同的(不同的)值。

SELECT DISTINCT product_id
FROM YourTable;

另一种方法是按列分组

SELECT column
FROM table
GROUP BY column 

如果您因为与 table 的连接而获得这些重复项,这一行有多行,最好使用任何可能的方法来减少要连接的数据量,而不是而不是生成大量重复项,然后不得不投入资源来压缩它们

例如,如果您已将 person 加入 address,并且 address 保留了该人居住过的所有地方的历史记录,当前地址由 leave_date 给出,该空值(一个人只有一个活动地址),最好这样做:

SELECT person.* 
FROM person JOIN address ON ...
WHERE address.leave_date IS NULL

不如

SELECT DISTINCT person.*
FROM person JOIN address ON ...

简而言之,您对“我的天啊,我得到了重复项”的回复不应该总是“只是在那里 ram a distinct 以摆脱它们”,而应该是“它们为什么出现并且在那里一种方法,例如减少 1:M 连接到 1:1,这样它们就不会出现在第一位?