2013-12-09 43 views
-3

查询问题数据库查询问题#1242

我不断收到错误:#1242 - 子查询返回多个1行

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

它工作正常,我的朋友谁拥有完全相同的代码,但对于有些原因不是我。 :/ 所有帮助赞赏:)

回答

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') 
0

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

SELECT branchNumber 
FROM Branch 
WHERE city LIKE 'Portsmouth' 

返回多行。

以这种方式使用的子查询只需要返回一个结果。根据你的数据,你所要完成的是什么,你可以用

SELECT branchNumber 
FROM Branch 
WHERE city LIKE 'Portsmouth' LIMIT 1 

解决这个问题或者使用IN代替=