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

时间:2013-03-11 11:32:37

标签: php mysql

嗨,我正在寻找一种只显示一组匹配的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匹配,那么只显示那些匹配列的一个结果,而不是两次或三次,或者多少次出现在数据库中?

4 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:0)

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

之前包含关键字DISTINCT

http://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

我希望这会有用