返回指示另一个表中存在行的列

时间:2010-11-30 22:10:15

标签: sqlite

sqlite3的

我有两个表,Table1和Table2。

这两个表都有一个名为Name的列。

我想查询Table2并返回Name列。另外,我想返回一个包含值1或0的列,具体取决于Table1中的任何行是否也包含相同的Name值。

最有效的方法是什么?

我正在寻找类似的东西:

SELECT
  Name, IF EXISTS (SELECT * FROM Table1 WHERE Table1.Name = Table2.Name) 1 ELSE 0
FROM
  Table2

1 个答案:

答案 0 :(得分:1)

抱歉,我对SQLite不是很熟悉,但这应该适合你。诀窍是在连接表上进行左外连接和比较。

SELECT
    Table2.Name,
    CASE WHEN Table1.Name IS NOT NULL THEN 1 ELSE 0 END
FROM
    Table2
LEFT OUTER JOIN
    Table1 ON Table1.Name = Table2.Name

我不太确定CASE语法是最好的,但如果你更熟悉SQLite中的条件,你可以清理那部分。