我需要 select 两次具有基于另一个 table 的不同值的相同列名

I need to select same column name twice having deferent values based on another table

我创建了 2 tables 第一个table“存储” 注意 Id 是 PK

第二个 table 字段名称为(Id、来源、数量、目的地)的“交易” 还注意到 Id 是 PK

我的 SQL 陈述没有给我任何信息,如下所示

Select Storages.Name as 'From', Storages.Name as 'To'
from Storages,
     Transactions
where Storages.Id = Transactions.Source
  and Storages.Id = Transactions.Destination

我需要显示结果,即使它不明显

您可以使用两个 JOIN 获得预期结果,一个在交易源上,一个在目的地上:

SELECT s1.name AS source, s2.name AS destination
FROM transactions t 
JOIN storages s1 ON s1.id = t.source
JOIN storages s2 ON s2.id = t.destination;

如果您不想多次使用相同的源和目标组合,请使用 DISTINCT 只显示一次:

SELECT DISTINCT s1.name AS source, s2.name AS destination
FROM transactions t 
JOIN storages s1 ON s1.id = t.source
JOIN storages s2 ON s2.id = t.destination;

请查看 SQL 教程或​​文档 JOIN 的工作原理,因为这是编写 SQL 查询时最重要的事情之一。

最后一点:您的描述说您想将结果中的列命名为“From”和“To”。我建议避免这种情况,因为“FROM”是一个 SQL 关键字,所以你不能只将它用作列名。因此,我将它们命名为“Source”和“Destination”。如果你想使用“From”和“To”,你可以使用引号:

SELECT DISTINCT s1.name AS "From", s2.name AS "To"
FROM transactions t 
JOIN storages s1 ON s1.id = t.source
JOIN storages s2 ON s2.id = t.destination;