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を取得してそれぞれのクエリを送信するphpコード(私はそれを使用しています)で修正する代わりに、SQLでそれをやりたいと思います。

4

4 に答える 4

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 に答える
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 に答える
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 に答える
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 に答える