嗨,我正在寻找一种方法,只显示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_id
和viewed_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.htmlSELECT 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
希望对大家有帮助