选择列不同的行

时间:2014-05-30 15:12:52

标签: mysql

令人惊讶的是,我无法找到这个问题,所以我来这里寻求帮助。

我有一个mysql表:

+---------+------------+---------+
|   id    |   link     |    col3 |
+---------+------------+---------+
|    1    |  site.com  |    a    |
+---------+------------+---------+
|    2    |  site.com  |    b    |
+---------+------------+---------+
|    3    |  test.com  |         |
+---------+------------+---------+

我尝试选择链接列不同的所有行。例如,id为1和3的行将返回但不会返回2,因为它已经在1(链接)中。

并注意:col3总是有不同的值,我有时链接为空。

我已经尝试过:

SELECT DISTINCT link, id FROM table WHERE col3 = '$col_id' AND link IS NOT NULL

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找此查询返回的结果集:

SELECT t.link AS link
     , MIN(t.id) AS id
  FROM mytable t
 GROUP BY t.link

这将返回" unique" link的值,以及来自具有id值的行的link值。


如果没有返回指定的结果集,请指定预期的结果集,最好通过举例说明。 (我的答案中查询中linkid列的返回基于OP查询中列出的表达式。

要返回整行,可以使用上面查询返回的结果集作为内联视图来检索id值。假设id是mytable中的唯一(或主要)键,例如:

SELECT r.id
     , r.link
     , r.col3
  FROM mytable r
  JOIN ( SELECT t.link AS link
              , MIN(t.id) AS id
           FROM mytable t
          GROUP BY t.link
       ) s
    ON s.id = r.id