Select 来自一个 table 的多个值基于另一个中的值
Select multiple values from one table based on values in another
我想要 select plot
table 中存在于 watchlist
中的所有行。例如,对于我上传到 SQLFiddle 的示例,我应该能够在 plot
中 return 行 3
、5
和 8
] 查询,因为它们存在于 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
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`
我想要 select plot
table 中存在于 watchlist
中的所有行。例如,对于我上传到 SQLFiddle 的示例,我应该能够在 plot
中 return 行 3
、5
和 8
] 查询,因为它们存在于 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
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`