我在MySQL上有2个表:物理层和虚拟机。下面是phy表:
下面是VM表:
我想得到一个像下面这样的结果:
我键入如下命令:
select ip, name, brand, vm.mem, vm.mem FROM phy JOIN vm ON phy.ip = vm.ip
但结果是这样的:
我必须键入什么命令才能得到我想要的结果?
pw9qyyiw1#
SELECT * FROM phy JOIN vm USING (ip)
该查询假定ip在两个表中都被定义为主键/唯一键。如果ip的数据只存在于其中一个表中,则查询将不会返回该数据。
ip
SELECT * FROM ( SELECT ip FROM phy UNION SELECT ip FROM vm ) total LEFT JOIN phy USING (ip) LEFT JOIN vm USING (ip)
或者,如果仅在一个表中可选显示,则使用(例如,对于vm中的可选显示)
vm
SELECT * FROM phy LEFT JOIN vm USING (ip)
oug3syen2#
SELECT phy.id, phy.name, phy.brand, vm.mem, vm.hdd FROM phy INNER JOIN vm ON phy.id=vm.id;
2条答案
按热度按时间pw9qyyiw1#
该查询假定
ip
在两个表中都被定义为主键/唯一键。如果
ip
的数据只存在于其中一个表中,则查询将不会返回该数据。或者,如果仅在一个表中可选显示,则使用(例如,对于
vm
中的可选显示)oug3syen2#