SQL Server?
不是很明白你的意思。

解决方案 »

  1.   

    具体sql
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070130http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    如:where id = (select id from 表A) 如果   (select id from 表A) 
     只有一条数据没有问题,但有多条就会出错.
      

  3.   

    可以用in
    where id in(select id from 表A)
      

  4.   

    当然有可能出错 改 in
    where id in (select id from 表A)
      

  5.   

    一个 id 不能用 = 号连接多个值
    多个的话必须用 in
    表示在子句里面的所有结果
      

  6.   

    数据多了就会出现你这个问题.解决方法1.where id in(select id from 表A)
    2.where id =(select top 1 id from 表A)
      

  7.   

    谢谢各位回复!我用的是Asp.net 开发一个平台,其中有用户管理,我采用的是数据访问曾直接访问数据库(我用的是SQL Server 2005),然后用业务逻辑曾来调用数据访问层的函数,页面通过业务逻辑层来访问数据库,将用户信息显示在页面上。sql 语句很简单,在数据集中建立一个GetUsers()的查询:
    SELECT UserId, UserName, Password, EmployeeId, AreaId, CreateDate, IsApproved,
              (SELECT Name
             FROM Employees
             WHERE (EmployeeId = Users.EmployeeId)) AS Name,
              (SELECT Area
             FROM Area
             WHERE (Users.AreaId = Users.AreaId)) AS Area
    FROM Users
    select 语句比表的列多了两列(Employee Name和Area)
    业务逻辑层也比较简单,用表适配器调用该语句:
    <System.ComponentModel.DataObjectMethodAttribute(ComponentModel.DataObjectMethodType.Select, True)> _
        Public Function GetUsers() As gdcopper.UsersDataTable
            Return Adapter.GetUsers()
        End Function
    页面采用GridView控件来显示用户信息:
    数据源设置如下
    <asp:ObjectDataSource ID="AllUsers" runat="server"
             SelectMethod="GetUsers" TypeName="UsersBLL"
            UpdateMethod="UpdateUser"  DeleteMethod="DeleteUser" OldValuesParameterFormatString="original_{0}">
            <UpdateParameters>
                <asp:Parameter Name="username" Type="String" />
                <asp:Parameter Name="employeeid" Type="Int32" />
                <asp:Parameter Name="areaid" Type="Int32" />
                <asp:Parameter Name="isapproved" Type="Boolean" />
                <asp:Parameter Name="Original_UserId" Type="Int32" />
            </UpdateParameters>
            <DeleteParameters>
                <asp:Parameter Name="Original_UserId" Type="Int32" />
            </DeleteParameters>
        </asp:ObjectDataSource>GridView设置如下(这里只列出简单的连接,模板部分不列出了)
    <asp:GridView ID="gvUsers" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            DataKeyNames="UserId" DataSourceID="AllUsers" Width="100%" EnableViewState=False >
            <Columns>
    ……
    </asp:GridView>这样的设计在我家里的电脑上运行都是正常的,不管是检索还是编辑、删除,但一到单位就出现这样的问题,我实在弄不明白,所以就拜托各位大哥大姐了!
    上面各位的回复我试验不了,不好意思!
      

  8.   

    sql 的问题,后2个字段是子查询,它们的结果不是唯一行集,要出错,sql 可以这样改——select l.*,a.Area
    from
    (
    SELECT u.UserId, u.UserName, u.Password, u.EmployeeId, u.AreaId, u.CreateDate, u.IsApproved,e.Name as EmployeeName
    FROM Users as u
    left join Employees as e
    on e.EmployeeId = u.EmployeeId
    )as l
    left join Area as a
    on a.AreaId = l.AreaId
    order by l.UserId目的是从Users 表中查询出所有用户(用的左关联),以及每个用户的名称(从Employees表)、所属地区(从Area表),因为是left join,这2个字段可能有的为null,要做3表完全匹配的结果,可以把left join换成inner join
      

  9.   

    SELECT   UserId,   UserName,   Password,   EmployeeId,   AreaId,   CreateDate,   IsApproved, 
                        (SELECT   Name 
                      FROM   Employees 
                      WHERE   (EmployeeId   =   Users.EmployeeId))   AS   Name, 
                        (SELECT   Area 
                      FROM   Area 
                      WHERE   (Users.AreaId   =   Users.AreaId))   AS   Area 
    FROM   Users 
    --前面的Users.AreaId换成AreaId试试
    --建议建个视图或改成连接查询
      

  10.   

    其实就是8楼说的,不过,还是用top 1 解决比较好