由MySQL选择多个行作为一行在两个不同的字段名称中

时间:2013-05-20 13:39:30

标签: mysql sql

我有两个表:一个是d_sms,另一个是d_image表。每个sms_id我有两个图像:第一个是主图像,第二个是商品图像。 我想通过image_id和image_offer_id选择这些图像。我给两个图像但两行的问题。我需要在一行中选择图像和offer_image。怎么做?

此代码为我提供了两行

SELECT d_sms.*
     , d_image.*
        FROM
          d_sms
        INNER  JOIN d_image
        ON d_sms.image_id = d_image.id
        or d_sms.offer_image_id = d_image.id

2 个答案:

答案 0 :(得分:3)

我认为最简单的方法是做两个单独的连接:

select d_sms.*, i.*, oi.*
from d_sms left outer join
    d_image i
    on d_sms.image_id = i.id left outer join
    d_image oi
    on d_sms.offer_image_id = oi.id;

注意:您需要从oii中选择单个字段,并为其指定不同的名称。

答案 1 :(得分:1)

select s.id, i.imag, i2.imag from d_sms s 
inner join  d_image i on s.image_id = i.imageid
inner join  d_image i2 on s.offer_image_id = i2.imageid

同意兰迪关于这两个联盟的事。如果两个图像都存在,那么内连接可能会更有效。