SQL:如何从一个链接到另一个表的表中找到描述值?

时间:2019-11-05 20:51:15

标签: sql select

我有两个表( TableA ; TableB ),我需要从TableB中提取查找信息,因为它与TableA中的条目相关。

表A 包含以下内容:

Unique_ID(应用于此数据库中每个记录的唯一ID e)

STATE_CODE(在记录中用作信息的状态的缩写;一条记录只能选择一个状态,但是同一状态可以应用于多个记录

表B 包含以下内容:

STATE_CODE

STATE_NAME

所以我们假设它看起来像这样:

表A

| Unique_ID | STATE_CODE |
+-----------+------------+
|     1     |     TX     |
|     2     |     GA     |
|     3     |     TX     |
|     4     |     MS     |

TableB 如下:

| STATE_CODE | STATE_NAME  |
+------------+-------------+
|    TX      |   Texas     |
|    GA      |  Georgia    |
|    MS      | Mississippi |

我需要执行select语句,以根据应用于TableA中Unique_ID的STATE_CODE从TableB中提取STATE_NAME(例如“德克萨斯州”)。

我知道我需要将STATE_CODE与Unique_ID关联,然后将STATE_NAME与该特定的STATE_CODE关联,但是我在声明时遇到了麻烦。它会提取州名,但会在结果中一遍又一遍地重复它,即:Texas; Texas; Texas。我认为每次编辑/更新单个记录(Unique_ID)时都要重复一次。如何使它只出现一次?

我的SQL语句相当简单,因为我正在通过数据库GUI(而不是SSMS或MySQL)进行编写和运行。因此,大量的JOIN和WHERE在GUI中无法正常工作。

SELECT STATE_NAME 
from dbo.TableB b
     , dbo.TableA a 
where b.STATE_CODE = a.STATE_CODE 
and a.Unique_ID = {Unique_ID}
  

我希望输出仅说“ Texas”,而改为   '德州;德州;德州'

我来自德克萨斯州,甚至我也不想一遍又一遍地说。

1 个答案:

答案 0 :(得分:0)

这将解决问题:

SELECT STATE_NAME 
from TableB b
     , TableA a 
where b.STATE_CODE = a.STATE_CODE 
and a.Unique_ID = 1
GROUP BY STATE_NAME

这里是DEMO

但请注意:

  

在您的问题中,您给了我们两个表格和一些数据。什么时候我们   使用该数据测试查询,它仅返回“ Texas”一次   因为在TableA中您为我们提供了两个不同的列值   TX的Unique_ID。在我上面的第一个演示中,我有   进行了测试。

如果还不行(由于group by和您的GUI),请尝试以下操作:

SELECT MAX(STATE_NAME)
from TableB b
     , TableA a 
where b.STATE_CODE = a.STATE_CODE 
and a.Unique_ID = 1

或者也许是这样

SELECT STATE_NAME
from TableB b
     , TableA a 
where b.STATE_CODE = a.STATE_CODE 
and a.Unique_ID = 1
limit 1