0

我应该得到一个 id 与另一个 id 匹配的所有行......

这是代码,我必须链接 2 个表...

SELECT *
  FROM acw_papers_web
  WHERE id_paper_web = ( SELECT id_paper_web
                           FROM acw_papers_web_autores
                           WHERE nombre_autor_pw LIKE'%Chicaiza%' )

我得到错误:Subquery returns more than 1 row

我注意到为什么...

但是用一个获取每个id并为每个id发送查询的php代码(我正在使用它)修复它,我想用sql来做。

4

4 回答 4

2

您正在尝试为一个=条件分配多个值:

改用in

SELECT 
    * 
FROM 
    acw_papers_web 
WHERE 
    id_paper_web in (
        SELECT 
            id_paper_web 
        FROM 
            acw_papers_web_autores 
        WHERE 
            nombre_autor_pw like '%Chicaiza%'
            )
于 2012-08-27T23:40:04.193 回答
2

您也可以使用EXISTS()而不是IN(),这可能会快一点。

SELECT a.id_paper_web 
  FROM acw_papers_web as a 
  WHERE  
  EXISTS
  (
    SELECT b.id_paper_web 
    FROM acw_papers_web_autores as b
    WHERE b.nombre_autor_pw like '%Chicaiza%' AND b.id_paper_web = a.id_paper_web
  )

演示

于 2012-08-28T00:21:48.773 回答
1

您可以将 = 更改为 IN。

SELECT * FROM acw_papers_web WHERE id_paper_web IN (SELECT id_paper_web FROM acw_papers_web_autores WHERE nombre_autor_pw like '%Chicaiza%')
于 2012-08-27T23:40:47.127 回答
1

用运算符 IN 替换 = 符号:

SELECT * FROM acw_papers_web
WHERE id_paper_web IN (
    SELECT id_paper_web FROM acw_papers_web_autores
    WHERE nombre_autor_pw like '%Chicaiza%'
)
于 2012-08-27T23:42:13.943 回答