只显示一次匹配的mysql表结果


show matching mysql table results only once?

嗨,我正在寻找一种方法,只显示mysql结果的匹配集只有一次。有人能告诉我怎么做吗?

这里有一个我想要实现的例子:

id  |  profile_id  | viewed_profile_id | date_viewed
1          4                7              00:00:00
2          5                6              00:00:00
1          4                7              00:00:00

所以如果profile_id和viewed_profile_id匹配,那么只显示一个结果为那些匹配的列,而不是两次或三次或多少次它出现在数据库中?

使用DISTINCT关键词:

SELECT DISTINCT id, profile_id, viewed_profile_id, date_viewed
FROM myTable

对于所选列的每个唯一组合,这将只显示一行。


或者,阅读您的问题很多(因为您只想匹配profile_idviewed_profile_id),如果您想显示每个查看器查看的最新日期,您可以使用GROUP BY并选择MAX查看的日期。我也假设有数据在date_viewed和它是可排序的:
SELECT profile_id, viewed_profile_id, MAX(date_viewed)
FROM myTable
GROUP BY profile_id, viewed_profile_id

DISTINCT有助于消除重复。如果查询返回的结果包含重复行,则可以删除重复行以生成每行唯一的结果集。为此,在SELECT之后和输出列列表

之前包含关键字DISTINCThttp://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html

SELECT DISTINCT(` profile_id`),`viewed_profile_id`,`id`,`date_viewed` FROM `tableName` GROUP BY `viewed_profile_id`

try this:

$query = "SELECT * FROM TABLENAME WHERE profile_id = '$PROFILEIDVALUE' AND viewed_profile_id = '$VIEWEDIDVALUE' LIMIT 0, 1"

根据你想要使用的ORDER可以使用ORDER BY id DESC/ASC

希望对大家有帮助