-4

我有3个表如下:

表“第一”       
---------------
标识项目
1 支笔
2 本书

表“第二”
------------------
身份证颜色
1个
2乙
3℃

表“第三”
----------------------
id第一秒
1 1 2
2 2 2
3 2 3

表“第三”有“第二”和“第一”之间的关系

我想从“第一个”表中查询 ID=2 的“项目”书,并在“第三个”表中检查它并获取与 third.first=2 匹配的third.second 列值,然后提取该值(其中可以是多个)并从“秒”表中获取 second.color 值

我希望已经清楚地说明了我的问题。我已经尝试过了,但它给出了错误:

#1242 - 子查询返回多于 1 行

SELECT color FROM `second` WHERE `id`=
(SELECT second FROM `third` WHERE `first`=
(SELECT id FROM `first` WHERE `item`='book'))
4

1 回答 1

2

您需要JOIN语法,如下所示:

SELECT 
  second.color 
FROM 
  first 
    LEFT JOIN third 
      ON first.ID=third.first 
    LEFT JOIN second 
      ON third.second=second.ID 
WHERE 
  first.item='book'
  AND
  second.ID IS NOT NULL

为了更好地理解JOIN,请阅读这篇文章

于 2013-08-27T12:07:05.230 回答