我得到的是这两张桌子:
无限数量的链接可以使用一个前缀。如果来自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;
答案 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;