数据库查询问题#1242

时间:2013-12-09 20:00:56

标签: php mysql sql database phpmyadmin

查询问题

我一直收到错误:#1242 - 子查询返回超过1行

SELECT staffNumber, firstName, Surname, JobTitle
FROM Staff
WHERE branchNumber = (SELECT branchNumber
              FROM Branch
              WHERE city LIKE 'Portsmouth') 

对于拥有完全相同代码的朋友,它可以正常工作,但由于某些原因不适合我。 :/ 所有帮助表示赞赏:)

2 个答案:

答案 0 :(得分:2)

这意味着您的子查询匹配多个结果。

SELECT staffNumber, firstName, Surname, JobTitle
FROM Staff
WHERE branchNumber = (SELECT branchNumber
          FROM Branch
          WHERE city LIKE 'Portsmouth' LIMIT 1) 

或者你可以这样做:

SELECT staffNumber, firstName, Surname, JobTitle
FROM Staff
WHERE branchNumber IN (SELECT branchNumber
          FROM Branch
          WHERE city LIKE 'Portsmouth') 

答案 1 :(得分:0)

我想象这是一个数据问题,

SELECT branchNumber
FROM Branch
WHERE city LIKE 'Portsmouth'

返回多行。

以这种方式使用的子查询只需要返回一个结果。根据您的数据和您要完成的任务,您可以使用

解决此问题
SELECT branchNumber
FROM Branch
WHERE city LIKE 'Portsmouth' LIMIT 1

或使用IN代替=