首页  >  问答  >  正文

如何在mysql查询中选择、匹配和返回值?

我有两张桌子、转会桌和俱乐部桌。

这是表传输:

id 名字 姓氏 来自俱乐部 去俱乐部 价格 来自backnumber 返回号码
0 示例1 示例2 EX3 EX4 示例5 示例6 示例7

这是桌子俱乐部:

id 缩写 全名
0 EX3 示例3
1 EX4 示例4

我想从转账表中获取一行,获取 fromclub,将其与 Clubs 中的缩写相匹配,从该行获取全名,并将其添加到响应中。我想对 toclub 专栏做同样的事情。然后我想对表传输中的每隔一行重复一次。

为了简单起见,这是我的预期结果:

id 名字 姓氏 来自俱乐部 去俱乐部 价格 来自backnumber 返回号码 来自俱乐部全名 toclub全名
0 示例1 示例2 EX3 EX4 示例5 示例6 示例7 示例3 示例4

我似乎找不到一种方法来构建一个查询,在不获得大约 512 行结果的情况下执行此操作,即使我目前只有 8 行结果。

SELECT *
FROM transfers,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.fromclub) AS fromclubfullname,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.toclub) AS toclubfullname

它返回 512 行和两列(称为 fullname),而不是一列 fromclubfullname 和 toclubfullname。

P粉986028039P粉986028039183 天前411

全部回复(1)我来回复

  • P粉827121558

    P粉8271215582024-04-03 15:15:27

    您可以通过左连接来做到这一点 -

    SELECT 
         transfers.*,
         c1.fullname as fromclubfullname,
         c2.fullname as toclubfullname FROM `transfers`
    LEFT JOIN clubs c1 ON (c1.abbr = transfers.fromclub)
    LEFT JOIN clubs c2 ON (c2.abbr = transfers.toclub)

    回复
    0
  • 取消回复