根据另一个表中的值从一个表中选择多个值

时间:2015-01-25 00:40:21

标签: mysql sql join

我想在plot表中选择watchlist表中存在的所有行。例如,通过我上传到SQLFiddle的示例,我应该可以使用查询返回3中的58plot行,因为它们存在于watchlist中。问题是,我不知道该怎么做。有什么想法吗?

这是我到目前为止所做的:

SELECT id, p_id, area, jobs from plot WHERE code="SA" AND p_id="3";

但只选择一行,但我知道它需要某种子查询,即用{strong>监视列表表替换WHERE code="SA" AND p_id="3";

4 个答案:

答案 0 :(得分:1)

您可以使用INNER JOIN来检查:

SELECT t1.id
     , t1.p_id
     , t1.area
     , t1.jobs 
FROM plot t1 
JOIN watchlist t2 ON t1.p_id = t2.p_id 

SQLFiddle

答案 1 :(得分:0)

返回ROWS 3,5和8

SELECT *
FROM plot, watchlist
WHERE plot.p_id = watchlist.p_id;

答案 2 :(得分:0)

从其他回复中可以看出 - 有多个解决方案,因此我会在您提到子查询后添加SUBQUERY解决方案。

SELECT id, p_id, area, jobs 
  FROM plot 
  WHERE p_id in
  (SELECT p_id
      FROM watchlist);

答案 3 :(得分:0)

尝试一下它会起作用:

SELECT t1.* from `plot` t1 JOIN `watchlist` t2 ON t1.`P_ID`=t2.`P_ID`

SQL Fiddle