当前位置: 首页 > 面试题库 >

在MySQL的2个字段上进行SQL LEFT-JOIN

萧永长
2023-03-14
问题内容

我有A一个观点B

A我有很多的信息的一些系统,如IPport我要保存所有。在中B,我只想添加一个信息A

这两个视图之间的匹配字段是IPPort。因此,我必须在两个视图中匹配具有相同IP和端口的那些主机。

例子:

查看A:

IP | OS     | Hostname | Port | Protocol
1  | Win    | hostONE  | 80   | tcp 
1  | Win    | hostONE  | 443  | tcp 
1  | Win    | hostONE  | 8080 | tcp 
2  | Linux  | hostTWO  | 21   | tcp
2  | Linux  | hostTWO  | 80   | tcp
3  | Linux  | hostTR   | 22   | tcp

查看B:

IP | Port | State
1  | 443  | Open
2  | 80   | Closed

输出

IP | OS     | Hostname | Port | Protocol | State
1  | Win    | hostONE  | 80   | tcp      |
1  | Win    | hostONE  | 443  | tcp      | Open
1  | Win    | hostONE  | 8080 | tcp      |
2  | Linux  | hostTWO  | 21   | tcp      | Closed
2  | Linux  | hostTWO  | 80   | tcp      |
3  | Linux  | hostTR   | 22   | tcp      |

注意:视图A的某些主机可能在视图B中没有与IP /端口相关的项目。

视图A的某些主机也可能在视图B中具有某些匹配项。

我以为我应该使用LEFT JOIN才能拥有View A的所有条目和View
B的正确关联条目,但是没有用。我无法使用正确的WHERE子句和JOIN解决方案来调整查询。

任何的想法?


问题答案:
select a.ip, a.os, a.hostname, a.port, a.protocol,
       b.state
from a
left join b on a.ip = b.ip 
           and a.port = b.port


 类似资料:
  • 问题内容: 假设我有一个小型数据库,其中包含三列:“ id1”,“ id2”和“ date”。我在字段“ id1”上建立数据库索引,因为它是一个经常选择的字段(许多选择查询都使用ex来运行:其中“ id1” = 125548)。 在某些特定的查询中,我需要根据未建立索引的表中的“日期”字段对用户的记录进行排序。我的好奇心是如果对日期进行排序操作(基本上是按订单执行的操作)字段将在整个数据库上运行,

  • 问题内容: 我想对elasticsearch 进行过滤,但我不知道… 这是我发送给ES _search方法的内容。 但是我总是会收到这个错误: 而且,如果我删除该选项并仅对geo_distance进行过滤,则可以使用…任何帮助都将是极好的。 干杯 问题答案: 我认为您的过滤器写有误。该错误表明过滤器或多或少地在参数方面遇到问题。参见http://www.elasticsearch.org/guid

  • 我有这样一个问题: 其中我将存储到数据库中的DateTime与通过java方法传递的localDate进行比较。我收到这个异常: 有一种方法可以配置hibernate/jpa自动进行转换,或者我必须传递一个日期对象,而不是LocalDate?我甚至尝试导入hibernate-java8,但没有改变

  • 本文向大家介绍在INT字段上执行MySQL LIKE比较?,包括了在INT字段上执行MySQL LIKE比较?的使用技巧和注意事项,需要的朋友参考一下 您需要使用方法对INT字段执行比较。语法如下- 为了理解上述语法,让我们创建一个表。以下是创建用于对INT字段执行LIKE比较的表的查询- 在表中插入一些记录,以在INT字段上执行MySQL LIKE比较。插入记录的查询如下- 使用select语句

  • 我想使用Laravel雄辩的模型和关系来连接项目中所有表中的数据;然而,我在翻译这些关系时遇到了一个问题。例如,我有两张桌子;第一个是Books表,另一个是Author表。 如何在Books表上建立关系以获取和?