sql查询依赖列

时间:2011-02-04 02:01:26

标签: mysql query-optimization

我有两张桌子

一个是关键字[id |关键字|帐户] k 一个是templateKeywordLink [templateId | keywordId] tkl

我想要做的是从关键字表格中获取所有关键字的结果集(其中account = 1)

我还想添加另一个名为selected的列。

如果k.id in (select templateId from templateKeywordLink)选中后应该包含“已选中”。否则它应为null

我想知道最佳查询是做什么的?

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。一种方法是针对返回感兴趣的ID的查询执行左连接。

请注意,大多数数据库都有更简洁的方法来执行我对CASE语句所做的操作,但CASE可以移植到您可能想要使用的任何关系数据库。

SELECT k.*
  , CASE
      WHEN tkl.id IS NULL
      THEN NULL
      ELSE 'selected'
    END as selected
FROM keywords k
  LEFT JOIN (
      SELECT DISTINCT templateId
      FROM templateKeywordLink
    ) as tkl
    ON k.id = tkl.templateId