標題可能聽起來很混亂。但這是我的問題。我想顯示數據庫中顯示的內容,但可能會顯示爲多行。例如:如何選擇MYSQL中的某些內容,而不是在行中選擇它兩次
2
2
1
1
1
1
1
1
2
我想顯示此數據,但我不希望它重複,我只是希望它顯示2秒和1次。
我現在擁有的一切:
$TheSQL = 'SELECT * FROM `table` WHERE `1`="'.$profileID.'" ORDER by RAND() LIMIT 10';
標題可能聽起來很混亂。但這是我的問題。我想顯示數據庫中顯示的內容,但可能會顯示爲多行。例如:如何選擇MYSQL中的某些內容,而不是在行中選擇它兩次
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 *
。
SQL = 'SELECT DISTINCT * FROM `table` WHERE `1`="'.$profileID.'" ORDER by RAND() LIMIT 10';
... DISTINCT是關鍵
使用DISTINCT
DISTINCT
允許你從結果集中刪除重複的行。它這樣使用:
SELECT DISTINCT *
FROM tablename
注意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, this
行,因爲同時考慮列,這是唯一的重複。
但是,如果我選擇這樣的一列:
SELECT DISTINCT user_id
FROM tablename
我會得到下面,期望的結果:
1
2
使用GROUP BY
所以,如果您選擇多列,但只希望其中一列不同,則可以使用GROUP BY
,如下所示:
SELECT DISTINCT user_id, whatever
FROM tablename
GROUP BY user_id
哪個得出以下結果,返回每個不同的user_id只有一行:
1 this
2 this
雖然,這些結果可能是一樣容易:
1 that
2 this
非分組列的價值將是任意的。實際上,MySQL 4.x甚至不會接受上面的GROUP BY
查詢。 MySQL 4.x不允許混合聚合(分組)和非聚合列。因此,下面的查詢將是首選:
SELECT DISTINCT user_id, MAX(whatever)
FROM tablename
GROUP BY user_id
現在,第二列的結果不是任意的:
1 this
2 this
「集團通過」還將工作 – Ray 2012-02-23 21:28:15