从表中多次选择一行

时间:2015-03-08 12:29:12

标签: mysql

我在mysql中有2个表,一个是用户,一个是项目

table1用户

id   name
----------
1    Peter
2    Roy
3    Mary

table2 item

id  name  owner1 owner2
 1   pen     1       2
 2   shoes   2       3

每个项目都有2个所有者,用户ID将存储在owner1和owner2中。 现在我想在table2中获取所有数据时选择table2中所有者的名称,所以我想两次选择行(名称)来获取名称。

我尝试使用join语句编写sql语句,但它不起作用。

在这种情况下如何编写sql语句?

我想要的结果列表

  1. itemid 2.itemname 3.owner1用户名4.owner2用户名

4 个答案:

答案 0 :(得分:1)

SELECT i.id
     , i.name
     , u1.name owner1
     , u2.name owner2
  FROM item i
  JOIN user u1
    ON u1.id = i.owner1
  JOIN user u2
    ON u2.id = i.owner2;

答案 1 :(得分:0)

选择项目'pen'的2个所有者名称:

SELECT name FROM user WHERE id=1 or id=2;

答案 2 :(得分:0)

你不是很清楚你想要什么结果,我假设你想要项目,然后是同一行上每个用户的名字,你可以为每个所有者创建两个连接:

SELECT item.id, item.name, user_one.name as owner1, user_two.name as owner2
FROM item
LEFT JOIN user AS user_one ON (user_one.id = item.owner1)
LEFT JOIN user AS user_two ON (user_two.id = item.owner2)

答案 3 :(得分:0)

您可以使用两次连接到用户表: SELECT item.name,owner1.name,owner2.name 来自物品 JOIN用户owner1 ON item.owner1 = owner1.id JOIN user owner2 ON item.owner2 = owner2.id