mysql左键连接到min id上有多行的表,以确保返回单行
使用下面的SQL,我将获得ItemID2的重复记录。一个图像id为2,另一个图像id为nullmysql左键连接到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 项目“”图像可能有匹配行,也可能没有匹配行。 图像表可能有多个匹配行 我试图返回图像表中的第一个匹配项(如果有),
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
不为空,则第二个失败