我有两个表( 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”,而改为 '德州;德州;德州'
我来自德克萨斯州,甚至我也不想一遍又一遍地说。
答案 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