Mysql 如果TableB.col值(0或1)为0和1创建了新列,请选择查询TableA和TableB

Mysql 如果TableB.col值(0或1)为0和1创建了新列,请选择查询TableA和TableB,mysql,sql,outer-join,Mysql,Sql,Outer Join,我有一张桌子图片 create table pictures ( picture_id int(10) unsigned NOT NULL AUTO_INCREMENT, mall_id float NOT NULL, shop_id float NOT NULL, picture_islogo int(11) NOT NULL , picture_path varchar(255) NOT NULL, PRIMARY KEY (picture_id) ) ; 图片的示

我有一张桌子图片

create table pictures (
  picture_id int(10) unsigned NOT NULL AUTO_INCREMENT,
  mall_id float NOT NULL,
  shop_id float NOT NULL,
  picture_islogo int(11) NOT NULL ,
  picture_path varchar(255) NOT NULL,
  PRIMARY KEY (picture_id)
) ;
图片的示例数据

INSERT INTO pictures VALUES
(1, -1, 1, 1, 'photo.jpg'),
(2, -1, 2, 1, 'photo.jpg'),
(3, -1, 3, 1, 'photo.jpg'),
(4, -1, 4, 1, 'photo.jpg'),
(5, -1, 5, 1, 'photo.jpg'),
(6, -1, 6, 1, 'photo.jpg'),
(7, -1, 7, 1, 'photo.jpg'),
(8, -1, 8, 1, 'photo.jpg'),
(9, -1, 9, 1, 'photo.jpg'),
(10, -1, 10, 1, 'photo.jpg'),
(11, -1, 11, 1, 'photo.jpg'),
(12, -1, 12, 1, 'photo.jpg'),
(13, -1, 13, 1, 'photo.jpg'),
(14, -1, 13, 0, 'photo.jpg');
和其他表商场

 create table malls (
  mall_id float NOT NULL AUTO_INCREMENT,
  user_id float NOT NULL,
  mall_displaysname varchar(255) NOT NULL,
  mall_description text NOT NULL,
  mall_contact varchar(14) NOT NULL,
  mall_logo_picture_id int(11) NOT NULL,
  mall_background_picture_id int(11) NOT NULL,
  PRIMARY KEY (mall_id)
);
商场的样本数据

    INSERT INTO malls VALUES
    (1, 2, 'mall', 'description', '+60 12 3456789', 14, 36),
    (2, 5, 'mall 2', 'description', '+60 12 3456789', 15, 37),
    (3, 6, 'mall 3', 'description ', '+60 12 3456789', 16, 38),
    (4, 13, 'Multimedia University', 'description ', '+60 12 3456789', 17, 39),
    (5, 18, 'Setia Walk', 'description ', '+60 12 3456789', 18, 40),
    (6, 20, 'Ampang Point', 'description ', '+60 12 3456789', 19, 41),
    (7, 21, 'Alamanda Plaza', 'description ', '+60 12 3456789', 20, 42),
    (8, 22, 'Subang Parade', 'description ', '+60 12 3456789', 21, 43),
    (9, 26, 'مجمع العرب - جدة', 'description ', '+60 12 3456789', 22, 44);
其中
mall\u background\u picture\u id
mall\u background\u picture\u id
引用
图片
图片
图片
图片
图片
图标
<0:Logo,1:background或其他)

我想要一个返回
图片
图片路径
的查询取决于
图片
的值
图片islogo
(0:徽标,1:背景或其他)

我需要得到的数据 购物中心标识、购物中心显示名称、购物中心标识、购物中心背景、购物中心描述和购物中心联系人

其中
mall\u logo
是条件的
照片路径
图片
图片_islogo
=1

**mall_背景**
相同,但
图片\u islogo
=0 及
mall\u logo\u picture\u id
=
picture\u id

将附加条件放入连接条件:

select * -- you can chose what columns you want
from malls m
left join pictures pl on m.mall_logo_picture_id = pl.picture_id
    and pl.picture_isLogo = 1
left join pictures pb on m.mall_background_picture_id = pb.picture_id
    and pb.picture_isLogo = 0
要进行左连接,附加条件必须在连接条件中,该条件在进行连接时进行计算


如果将它们放在where子句中,该子句在进行联接后进行计算,则会强制外部联接成为内部联接,因为连接必须成功,附加条件才能为真。

是否可以将
mall\u background\u picture\u id
和/或
mall\u logo\u picture\u id
设置为空?您能提供一些示例数据和预期结果吗?我已经添加了一个示例数据谢谢,但现在我有了pictures表中的列重复了两次(一个用于islogo=0,另一个用于picture\u islogo=1),所以现在我有两次picture\u路径列,一个用于徽标,另一个用于背景,我不需要pictures表中的任何内容,除了picture\u路径(并将其重命名为logo和background),再次感谢您在选择中找到它,我应该指定pl.picture\u路径作为徽标,pb.picture_路径作为背景。非常感谢你