私が持っているのはこれらの2つのテーブルです:
1つのプレフィックスは、無制限の数のリンクで使用できます。がパラメータとしてテーブル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
、それが多くのリンクで使用されている場合の重複があるからです。
重複がなく、リスト内の少なくとも1つのリンクによって作成されているかどうかを示すマーク(必要に応じてフラグ)が付いたプレフィックスのリストを取得するにはどうすればよいですか?
編集 はこのクエリで終了しました:
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;