加入两个没有重复的表和一个标记

时间:2012-07-26 09:24:39

标签: mysql join

我得到的是这两张桌子: tables

无限数量的链接可以使用一个前缀。如果来自id表的click_links作为参数,我会收到一个列表。

现在我的目标是选择前缀列表并标记该列表中链接使用的前缀。

我尝试了什么:我最好的尝试是:

select p.id, p.contents, c.id,
    case
    when (c.id in (544,545...))
        then 1
        else 0
    end as isused
from prefixes p 
join click_links c on c.prefix_id = p.id

但这并不是那么好,因为如果许多链接使用prefix,则会有重复的副​​本。

如何获得没有重复的前缀列表,并带有标记(如果您愿意,可以显示标记),显示列表中是否至少有一个链接?

修改 以此查询结束:

SELECT distinct(p.id), p.contents,
       IF(c.id IS NOT NULL, 1, 0) AS isused
FROM prefixes p
     LEFT JOIN (SELECT DISTINCT (prefix_id), id
                FROM click_links WHERE id IN(544, 545...)
               )c
      ON c.prefix_id = p.id;

1 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西,试试吧:

SELECT p.id, p.contents, c.id,
       IF(c.id IS NOT NULL, 1, 0) AS isused
FROM prefixes p
     LEFT JOIN (SELECT DISTINCT id
                FROM click_links WHERE id IN(544,545...)
               )c
      ON c.prefix_id = p.id;