Php 如果MYSQL中的内容在行中,我如何在不选择两次的情况下选择它

Php 如果MYSQL中的内容在行中,我如何在不选择两次的情况下选择它,php,mysql,select,Php,Mysql,Select,标题听起来可能令人困惑。但这是我的问题。我想显示数据库中显示的内容,但它可能显示在多行中。例如: 2 2 1 1 1 1 1 1 2 我想显示这些数据,但我不想重复,我只想让它显示一次2和1 我现在所拥有的: $TheSQL = 'SELECT * FROM `table` WHERE `1`="'.$profileID.'" ORDER by RAND() LIMIT 10'; 您可以将SELECT*更改为SELECT DISTINCT*您可以将SELECT*更改为SELECT DISTI

标题听起来可能令人困惑。但这是我的问题。我想显示数据库中显示的内容,但它可能显示在多行中。例如:

2
2
1
1
1
1
1
1
2
我想显示这些数据,但我不想重复,我只想让它显示一次2和1

我现在所拥有的:

$TheSQL = 'SELECT * FROM `table` WHERE `1`="'.$profileID.'" ORDER by RAND() LIMIT 10';
您可以将SELECT*更改为SELECT DISTINCT*

您可以将SELECT*更改为SELECT DISTINCT*

…这是关键

…DISTINCT是使用DISTINCT的键

DISTINCT允许您从结果集中删除重复的行。它是这样使用的:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
请注意,DISTINCT适用于结果集中所有返回的列。因此,如果您返回多个字段,并且希望将其应用于特定字段,那么DISTINCT将不是答案

例如,给定以下数据集:

user_id      whatever
----------------------
1            this
1            that
2            this
2            this
以下查询:

SELECT DISTINCT user_id, whatever
FROM tablename
返回:

1            this
1            that
2            this
它只删除了重复的2,这一行,因为考虑到这两列,这是唯一的重复

但是,如果我选择这样一个列:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
我将获得以下预期结果:

1
2
使用分组方式

因此,如果您选择了多个列,但只希望其中一个列是不同的,您可以像这样使用GROUP BY:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
这将给出以下结果,每个不同的用户id只返回一行:

1            this
2            this
1            this
2            this
尽管如此,这些结果也同样可能:

1            that
2            this
非分组列的值将是任意的。事实上,MySQL 4.x甚至不会接受上面的分组查询。MySQL 4.x不允许混合聚合分组列和非聚合列。因此,最好使用以下查询:

SELECT DISTINCT user_id, MAX(whatever)
FROM tablename
GROUP BY user_id
现在,第二列的结果不是任意的:

使用不同的

DISTINCT允许您从结果集中删除重复的行。它是这样使用的:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
请注意,DISTINCT适用于结果集中所有返回的列。因此,如果您返回多个字段,并且希望将其应用于特定字段,那么DISTINCT将不是答案

例如,给定以下数据集:

user_id      whatever
----------------------
1            this
1            that
2            this
2            this
以下查询:

SELECT DISTINCT user_id, whatever
FROM tablename
返回:

1            this
1            that
2            this
它只删除了重复的2,这一行,因为考虑到这两列,这是唯一的重复

但是,如果我选择这样一个列:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
我将获得以下预期结果:

1
2
使用分组方式

因此,如果您选择了多个列,但只希望其中一个列是不同的,您可以像这样使用GROUP BY:

SELECT DISTINCT *
FROM tablename
SELECT DISTINCT user_id
FROM tablename
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
这将给出以下结果,每个不同的用户id只返回一行:

1            this
2            this
1            this
2            this
尽管如此,这些结果也同样可能:

1            that
2            this
非分组列的值将是任意的。事实上,MySQL 4.x甚至不会接受上面的分组查询。MySQL 4.x不允许混合聚合分组列和非聚合列。因此,最好使用以下查询:

SELECT DISTINCT user_id, MAX(whatever)
FROM tablename
GROUP BY user_id
现在,第二列的结果不是任意的: