操作数应该包含1列

kx1ctssn  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(364)
SELECT
  student.Student_Name
FROM
  `student`
GROUP BY
  student.Student_ID,
  teacher.Department_No IN (
    SELECT
      teacher.Department_No
    FROM
      `teacher`, `building`
    WHERE
      teacher.Department_No BETWEEN 1000
      AND 2999
    GROUP BY
      teacher.Department_No = (
        SELECT
          *
        FROM
          `building`
        WHERE
          building.Building_No IN ( '1', '2') 
      )
  ) LIMIT 0, 25
zphenhs4

zphenhs41#

您的sql有两个问题:
你需要使用 IN 而不是 = 或者将子查询限制为只有一条记录
您需要使用指定列而不是 * 在子查询中
使用 IN ```
teacher.Department_No IN (
SELECT
Department_No
FROM
building
WHERE
building.Building_No IN ( '1', '2')
)

使用 `LIMIT` ```
teacher.Department_No = (
    SELECT
      Department_No
    FROM
      `building`
    WHERE
      building.Building_No IN ( '1', '2') 
    LIMIT 1
  )
vuktfyat

vuktfyat2#

您需要在子查询部分选择一列,如department\u id

SELECT
  student.Student_Name
FROM
  `student`
GROUP BY
  student.Student_ID,
  teacher.Department_No IN (
    SELECT
      teacher.Department_No
    FROM
      `teacher`, `building`
    WHERE
      teacher.Department_No BETWEEN 1000
      AND 2999
    GROUP BY
      teacher.Department_No = (
        SELECT
          department_id
        FROM
          `building`
        WHERE
          building.Building_No IN ( '1', '2') 
      )
  ) LIMIT 0, 25

相关问题