将mysql表连接两次到同一列

时间:2016-02-17 02:00:57

标签: mysql

我有一个表users,其中列profile_imagecover_image这两个指向id中的images

TABLE images (
  id,
  url,
  description,
  ...
)

TABLE users (
  profile_image (foreign key ON images.id),
  cover_image (foreign key ON images.id),
  ...
)

我想要检索:

    加入images.url AS profile_image
  1. users.profile_image = images.id 加入images.url AS cover_image
  2. users.cover_image = images.id

1 个答案:

答案 0 :(得分:4)

您可以按如下方式加入两次:

SELECT i.url AS profile_image, i2.url AS cover_image
FROM users u
INNER JOIN images i on u.profile_image = i.id
INNER JOIN images i2 on u.cover_image = i2.id
WHERE u.id = ....

我还建议命名profile_image_idcover_image_id之类的外键,以便明确该列指向外表中的某种ID。试着遵循这个惯例。