如何在sql中的两个表上加入多列

时间:2021-05-20 16:24:37

标签: mysql sql database

我有两张如下表

create table test_user (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name varchar(64)
);

create table test_info(
        id INT AUTO_INCREMENT PRIMARY KEY,
        sellerId INT,
        buyerId INT,
        x varchar,
        y varchar,
        z varchar
);

如何在同一个语句中获取 test_info 表中的所有信息以及 test_user 表中的买方名称和卖方名称?

select * from test_table join test_user on sellerId = test_user.id;
or 
select * from test_table join test_user on buyerId = test_user.id;

只会给我一个卖家或买家,但我想得到两者的结果

2 个答案:

答案 0 :(得分:3)

您必须将 test_user 的 2 个副本加入到 test_info

SELECT ti.*, s.name seller_name, b.name buyer_name
FROM test_info ti
INNER JOIN test_user s ON ti.sellerId = s.id
INNER JOIN test_user b ON ti.buyerId = b.id;

test_user 的第一个副本用于返回卖方名称,第二个副本用于返回买方名称。

答案 1 :(得分:0)

除了其他答案,您还可以在 SELECT 上尝试子查询:

SELECT t.*, (SELECT name FROM test_user WHERE id=t.sellerId) sellerName, (SELECT name FROM test_user WHERE id=t.buyerId) buyerName
FROM test_info t;

在这种情况下,我认为这会降低效率,但它是您将来可以使用的有用资源

相关问题