我有2个SQL语句。我需要一个根据另一个选择来选择结果。这些表格无关。唯一的关系是初始选择的结果。
初步选择......
SELECT
relatedseries
FROM RelatedItems
WHERE series = @getseries
ORDER BY ID
根据上述选择结果进行选择......
SELECT
picid,
description
FROM product_series
WHERE newseries = relatedseries
我知道这是不正确的,部分是因为我已经尝试过,但大多数情况下我确信语法不正确。但是例如....
SELECT
picid,
description
FROM product_series
WHERE newseries = (
SELECT
relatedseries
FROM RelatedItems
WHERE series = @getseries ORDER BY ID
)
如何重写此功能并仍能达到我要求的效果?
答案 0 :(得分:0)
对于两个问题,所有人都不错,尽管错误信息应该很容易理解。
ORDER BY
语句中使用SELECT
子句。尝试删除该部分。 更正了查询
SELECT
picid,
description
FROM product_series
WHERE newseries IN (
SELECT
relatedseries
FROM RelatedItems
WHERE series = @getseries
--ORDER BY ID
)
答案 1 :(得分:0)
您可以使用IN获取第一个查询的多个结果
SELECT picid,
description
FROM product_series
WHERE newseries IN (SELECT relatedseries
FROM RelatedItems
WHERE series = @getseries
)
ORDER BY picid;
答案 2 :(得分:0)
你可以用存在
来做到这一点SELECT picid, description FROM product_series WHERE newseries = relatedseries
Where
exists (SELECT 1FROM RelatedItems WHERE series = @getseries ORDER BY ID)
答案 3 :(得分:0)
使用JOIN
而不是2个查询。
SELECT p.picid, p.description, r.relatedseries
FROM product_series p
INNER JOIN RelatedItems r ON p.newseries = r.relatedseries
AND r.series = @getseries
尽可能少地获取您需要的数据。
注意:如果您在RelatedItems中有多个匹配product_series的记录,则可能会给您重复的p.picid和p.description。
答案 4 :(得分:0)
答案 5 :(得分:0)
SELECT NS.picid, NS.description
FROM product_series NS,
(SELECT relatedseries FROM RelatedItems WHERE
series = @getseries) RI
WHERE NS.newseries = RI.relatedseries
ORDER BY NS.picid ASC