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
现在,第二列的结果不是任意的: