【发布时间】:2023-04-07 04:27:02
【问题描述】:
我有一个包含两个表、交换机和路由器的数据库。两个表中的列具有相同的名称(dev_name、dev_ip 等)。
我需要知道如何查询这两个表并找到具有特定主机名的单个记录。因此,如果我的 PHP 表单是通过设备名称查询数据库,我想查询整个数据库(所有表)并找到具有被查询设备的表/行。
我试过这样的查询:
SELECT * FROM switches,routers
WHERE switches.dev_name = 'coreswitch01' OR routers.dev_name = 'core01switch';
但它给了我一个串联的输出,其中包括路由器表中的每个路由器和 coreswitch01 重复。
SELECT * FROM switches,routers
WHERE switches.dev_name = 'coreswitch01' OR routers.dev_name = 'core01switch';
我希望构建的是一个查询,它读取两个表并找到 coreswitch01 的记录,然后只向我显示它找到的任何表中的一条记录。
【问题讨论】:
-
只是为了帮助您理解为什么会看到您所看到的结果,两个表名之间的
,是JOIN查询的简写语法;这就是行连接的来源;此外,如果没有JOIN条件,您的结果是笛卡尔连接,这就是重复的来源; HTH; Mureinik 的答案是您想要实际实现的目标的出色而简洁的答案