我有两张如下表
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;
只会给我一个卖家或买家,但我想得到两者的结果
答案 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;
在这种情况下,我认为这会降低效率,但它是您将来可以使用的有用资源