Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql左键连接到min id上有多行的表,以确保返回单行_Mysql_Database_Join - Fatal编程技术网

mysql左键连接到min id上有多行的表,以确保返回单行

mysql左键连接到min id上有多行的表,以确保返回单行,mysql,database,join,Mysql,Database,Join,使用下面的SQL,我将获得ItemID2的重复记录。一个图像id为2,另一个图像id为null item id=1.. id=2.. id=3.. item_image id=1, item_id=1, image_id=1 id=2, item_id=2, image_id=2 id=3, item_id=2, image_id=3 image id=1 id=2 id=3 项目“”图像可能有匹配行,也可能没有匹配行。 图像表可能有多个匹配行 我试图返回图像表中的第一个匹配项(如果有),

使用下面的SQL,我将获得ItemID2的重复记录。一个图像id为2,另一个图像id为null

item
id=1..
id=2..
id=3..

item_image
id=1, item_id=1, image_id=1
id=2, item_id=2, image_id=2
id=3, item_id=2, image_id=3

image
id=1
id=2
id=3
项目“”图像可能有匹配行,也可能没有匹配行。 图像表可能有多个匹配行

我试图返回图像表中的第一个匹配项(如果有),但如果不存在则返回null

如果行'or im.id is null'存在,我将确保如果没有匹配的图像,则可以不返回任何内容。如果我没有这个,并且没有图像,记录将不会出现,因为没有图像。 然而,使用这个或null,我得到了一个匹配的图像和一个null值。复制品。
有没有更好的方法来处理这个问题?

这条评论太长了

表达方式:

 SELECT  i.id iid, im.id, i.summary, i.description, ist.name , item_status, i.enabled, p.price_asked_for, im.thumb_url
 FROM item i
 LEFT JOIN item_status ist
 ON ist.id = i.item_status_id
 LEFT JOIN price p
 ON p.id = i.price_id
 LEFT OUTER JOIN item_image ii
 ON i.id = ii.item_id
 LEFT OUTER JOIN image im
 ON im.id = ii.image_id
 WHERE i.member_id = 436
  and (im.id =  ( select min(ii2.image_id) from item_image ii2 where      ii.item_id = ii2.item_id) 
    or im.id is null)

无法负责返回重复项。这两个表达式最多只能有一个是真的。为什么?因为如果
im.id
为空,那么第一个总是会失败(与
NULL
的比较不正确)。如果
im.id
不为空,则第二个将失败。

此注释太长

表达方式:

 SELECT  i.id iid, im.id, i.summary, i.description, ist.name , item_status, i.enabled, p.price_asked_for, im.thumb_url
 FROM item i
 LEFT JOIN item_status ist
 ON ist.id = i.item_status_id
 LEFT JOIN price p
 ON p.id = i.price_id
 LEFT OUTER JOIN item_image ii
 ON i.id = ii.item_id
 LEFT OUTER JOIN image im
 ON im.id = ii.image_id
 WHERE i.member_id = 436
  and (im.id =  ( select min(ii2.image_id) from item_image ii2 where      ii.item_id = ii2.item_id) 
    or im.id is null)
无法负责返回重复项。这两个表达式最多只能有一个是真的。为什么?因为如果
im.id
为空,那么第一个总是会失败(与
NULL
的比较不正确)。如果
im.id
不为空,则第二个失败