首页 > 解决方案 > 查询为同一列返回多个值?

问题描述

我正在运行一个简单的查询并要求从同一个表中返回同一列两次。出于某种原因,该列返回两个不同的结果。有人可以解释为什么并告诉我如何要求查询两次返回一致的结果吗?

这是我正在运行的代码:

SELECT WIN1.SERVERNAME,
       WIN1.APPLICATION AS 'App 1',
       WIN1.STATUS      AS 'Status 1',
       WIN1.IPADDRESS   AS 'WIN1 IP',
       WIN2.APPLICATION AS 'App 2',
       WIN2.STATUS      AS 'Status 2',
       WIN2.IPADDRESS   AS 'WIN2 IP'
FROM   SERVER.WINDOWS WIN1,
       SERVER.WINDOWS WIN2
WHERE  WIN1.IPADDRESS IS NOT NULL
       AND WIN2.IPADDRESS IS NOT NULL
       AND WIN1.SERVERNAME LIKE '%SERVER NAME%'
       AND WIN1.STATUS LIKE '%line%'
       AND WIN2.STATUS LIKE '%line%'
       AND WIN2.APPLICATION LIKE '%APPLICATION NAME%' 

先感谢您。

标签: sqlsql-serverjoin

解决方案


通过将同一个表两次添加到您的查询中类似于进行完全外部连接,您正在将表与自身连接起来,where 子句使事情变得更难弄清楚,只需调用不带任何过滤器的查询即可了解效果查询调用同一个表两次。

从这一点开始,您应该能够完成您正在寻找的东西。

SELECT WIN1.SERVERNAME,
   WIN1.APPLICATION AS 'App 1',
   WIN1.STATUS      AS 'Status 1',
   WIN1.IPADDRESS   AS 'WIN1 IP',
   WIN2.APPLICATION AS 'App 2',
   WIN2.STATUS      AS 'Status 2',
   WIN2.IPADDRESS   AS 'WIN2 IP'
FROM   SERVER.WINDOWS WIN1,
   SERVER.WINDOWS WIN2

或者

Select * FROM   
   SERVER.WINDOWS WIN1,
   SERVER.WINDOWS WIN2

推荐阅读