根据表格结果

时间:2015-10-22 07:08:33

标签: sql postgresql

首先,抱歉标题。想不出任何更好的头衔。
 这就是我得到的:

SELECT study FROM old_employee;
  study    
---------
 STUDY1
 STUDY2
 STUDY3
 STUDY1
 STUDY2


 SELECT id,name_string FROM studies;
 id |    name_string    
----+-------------------
  1 | STUDY1
  2 | STUDY2
  3 | STUDY3

现在我想根据第一个输出找到id。这就是我的尝试,但显然它不起作用。

SELECT id FROM studies WHERE name_string LIKE (SELECT study FROM old_employee);

我想要的输出:

 id    
----
 1
 2
 3
 1
 2

编辑:我将old_employee保存为一个视图,我想知道是否有更聪明的方法将其包含在下面的答案中,而不是先创建此视图。

CREATE VIEW old_employee AS
  SELECT *
    FROM dblink('dbname=mydb', 'select study from personnel')
    AS t1(study char(10));

1 个答案:

答案 0 :(得分:1)

这可以在不使用SQL LIKE Operator的情况下完成。这是查询。

SELECT s.id
FROM studies s,
     old_employee o
WHERE s.name_string = o.study; 

第二个查询(根据@a_horse_with_no_name所说的):

SELECT studies.id
FROM studies
INNER JOIN old_employee 
ON studies.name_string = old_employee.study