用于查找具有特定前缀的记录的SQL查询

时间:2014-05-01 20:39:34

标签: sql sql-server join

我正在编写SQL查询,并希望通过循环而不是设置操作来解决所有问题。例如,这里有两个表(列表,真的 - 每个一个列); idPrefix是idFull的子集。我想选择每个有我感兴趣的前缀的完整ID;也就是说,idFull中的每一行都有一个idPrefix中的相应条目。

idPrefix.ID     idFull.ID
----------      ---------- 
    12              8
    15              12
    300             12-1-1
                    12-1-2
                    15
                    15-1
                    300

期望的结果将是idFull中的所有内容,除了值8.超级简单,每个循环使用a,但我不是将其概念化为设置操作。我在下面尝试了一些变化;一切似乎都返回了所有的一个表。我不确定我的问题是关于我如何进行加入,或者我是如何使用LIKE的。

SELECT f.ID 
FROM idPrefix AS p
JOIN idFull AS f
ON f.ID LIKE (p.ID + '%')

详细说明:

  • 值为varchars,前缀可以是任意长度,但不包含分隔符' - '。
  • This question似乎相似,但更复杂; this one只使用一个表格。
  • 答案不需要快速/优化/无论如何。
  • 使用SQL Server 2008,但对概念性理解比对特定于风味的查询更感兴趣。
  • Aaaa和我回到真正的编码和&大约3年后,如果我对任何礼节生锈,那就很抱歉。 谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用LIKE

将完整表加入前缀表
SELECT idFull.ID
   FROM idFull full
   INNER JOIN idPrefix pre ON full.ID LIKE pre.ID + '%'
相关问题