令人惊讶的是,我无法找到这个问题,所以我来这里寻求帮助。
我有一个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
答案 0 :(得分:1)
我认为您正在寻找此查询返回的结果集:
SELECT t.link AS link
, MIN(t.id) AS id
FROM mytable t
GROUP BY t.link
这将返回" unique" link
的值,以及来自具有id
值的行的link
值。
如果没有返回指定的结果集,请指定预期的结果集,最好通过举例说明。 (我的答案中查询中link
和id
列的返回基于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