繁体   English   中英

发生此错误的原因:子查询返回了多个值

[英]Why this error occurs: Subquery returned more than 1 value

我的SQL查询

 SELECT BOOKING_TIME,
       Contact_No,
       (FName+LName)AS NAME ,
       E_MAIL,

  (SELECT ZM.ZONE_NAME
   FROM Zone_Master ZM
   INNER JOIN BOOKINGS ON ZM.Zone_ID = BOOKINGS.Zone_ID)AS ZONE_NAME,
       City,
       Addr_1,
       Addr_2,
       PIN,

  (SELECT PROJECTS.PROJECT_NAME
   FROM PROJECTS
   INNER JOIN BOOKINGS ON PROJECTS.PROJECT_ID=BOOKINGS.PROJECT_ID)AS PROJECT_NAME
FROM BOOKINGS

由于子查询,您收到该错误:

(SELECT ZM.ZONE_NAME
 FROM Zone_Master ZM
 INNER JOIN BOOKINGS ON ZM.Zone_ID = BOOKINGS.Zone_ID) AS ZONE_NAME

和:

(SELECT PROJECTS.PROJECT_NAME
 FROM PROJECTS
 INNER JOIN BOOKINGS ON PROJECTS.PROJECT_ID = BOOKINGS.PROJECT_ID) AS PROJECT_NAME

您将获得多条记录,并尝试将它们存储在单个字段中。

这是您的查询:

SELECT  BOOKING_TIME, Contact_No,(FName+LName)AS NAME, E_MAIL,
        (SELECT ZM.ZONE_NAME
         FROM Zone_Master ZM INNER JOIN
              BOOKINGS
              ON ZM.Zone_ID = BOOKINGS.Zone_ID
       ) AS ZONE_NAME,
       City, Addr_1, Addr_2, PIN,
       (SELECT PROJECTS.PROJECT_NAME
        FROM PROJECTS INNER JOIN
             BOOKINGS
             ON PROJECTS.PROJECT_ID=BOOKINGS.PROJECT_ID
       ) AS PROJECT_NAME
FROM BOOKINGS;

任一子查询都可能返回多个行。 在子查询中select条款,你可以只返回一个值。 我认为有一个简单的解决方法。 您可能希望相关subuqeries,所以只是删除BOOKINGS从每个子查询表:

SELECT  BOOKING_TIME, Contact_No, (FName+LName)AS NAME, E_MAIL,
        (SELECT ZM.ZONE_NAME
         FROM Zone_Master ZM
         WHERE ZM.Zone_ID = BOOKINGS.Zone_ID
       ) AS ZONE_NAME,
       City,Addr_1,Addr_2,PIN,
       (SELECT PROJECTS.PROJECT_NAME
        FROM PROJECTS 
        WHERE PROJECTS.PROJECT_ID = BOOKINGS.PROJECT_ID
       )AS PROJECT_NAME
FROM BOOKINGS;

这些现在是“相关子查询”。 在这种情况下,它们各自应最多返回一行。

表达此查询的另一种方法是使用join语法:

SELECT BOOKING_TIME, Contact_No, (FName+LName)AS NAME, E_MAIL,
       ZM.ZONE_NAME,
       City, Addr_1, Addr_2, PIN,
       p.PROJECT_NAME
FROM BOOKINGS b LEFT OUTER JOIN
     Zone_Master zm
     on ZM.Zone_ID = BOOKINGS.Zone_ID LEFT OUTER JOIN
     PROJECTS p
     on p.PROJECT_ID = b.PROJECT_ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM