【问题标题】:Sub-query returned more than one item... i need it to return more than one item though what should i do?子查询返回了多个项目...我需要它返回多个项目,但我应该怎么做?
【发布时间】:2014-03-11 22:01:35
【问题描述】:

您好,我正在制作一个墙存储过程,它将显示人们的帖子列表。这是下面的代码

    ALTER PROCEDURE [dbo].[spDisplayWall] (@AccountName varchar(50))
    /*****
    Description: displays the users wall
    *****/
    AS
        BEGIN
            SELECT * FROM WallPosts
            WHERE Posted_By = (SELECT AddedAccountName FROM Friends WHERE AccountName = @AccountName)
            ORDER BY WallPosts.Date_Posted ASC
        END

我希望上面的代码实现的是它会从wallposts 中选择朋友帐户名称等于那里的所有内容。所以基本上返回所有有朋友的帖子。但由于我编码的方式,我只能返回一个朋友。我需要它来返回所有人民的职位。以下是它需要执行的全部内容,如果可能的话,我想保持这种状态,它只需要帐户持有人的姓名。

            EXEC spDisplayWall 'KMV661'

这是我得到的错误:

    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

【问题讨论】:

    标签: sql stored-procedures subquery sql-returning


    【解决方案1】:

    使用in 代替=

           SELECT *
           FROM WallPosts
           WHERE Posted_By in (SELECT AddedAccountName FROM Friends WHERE AccountName = @AccountName)
           ORDER BY WallPosts.Date_Posted ASC
    

    【讨论】:

    • 它现在不会出错,但它只显示我朋友表中的一个朋友帖子。我有 2 个朋友,他们都有墙帖,所以应该有 2 个帖子,但没有
    • 我的错我把代码放在了错误的地方!!!谢谢你的帮助,它工作得很好:)
    • INB4 我是一个菜鸟和编码新手
    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多