嗨,我正在寻找一种只显示一组匹配的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匹配,那么只显示那些匹配列的一个结果,而不是两次或三次,或者多少次出现在数据库中?
答案 0 :(得分:4)
使用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
答案 1 :(得分:0)
DISTINCT有助于消除重复。如果查询返回包含重复行的结果,则可以删除重复项以生成每行都是唯一的结果集。为此,请在SELECT之后和输出列列表
之前包含关键字DISTINCThttp://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html
答案 2 :(得分:0)
SELECT DISTINCT(` profile_id`),`viewed_profile_id`,`id`,`date_viewed` FROM `tableName` GROUP BY `viewed_profile_id`
答案 3 :(得分:-1)
试试这个:
$query = "SELECT * FROM TABLENAME WHERE profile_id = '$PROFILEIDVALUE' AND viewed_profile_id = '$VIEWEDIDVALUE' LIMIT 0, 1"
根据您要使用的ORDER,可以使用ORDER BY id DESC / ASC
我希望这会有用