Select 来自一个 table 的多个值基于另一个中的值

Select multiple values from one table based on values in another

我想要 select plot table 中存在于 watchlist 中的所有行。例如,对于我上传到 SQLFiddle 的示例,我应该能够在 plot 中 return 行 358 ] 查询,因为它们存在于 watchlist 中。问题是,我不知道该怎么做。有什么想法吗?

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

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

但只有 select 一行,但我知道这需要某种子查询,即用对 watchlist[=29= 的引用替换 WHERE code="SA" AND p_id="3"; ] table.

您可以使用 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

Returns 第 3、5 和 8 行

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

正如您从其他回复中看到的那样 - 有多种解决方案,所以我将添加一个 SUBQUERY 解决方案,因为您提到了子查询。

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

试试这个它会起作用:

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

SQL Fiddle