如何联接列中具有相同值的两个表


How To Join Two Tables Having Some Values Same in the Column

每个它与MYSQL查询有关。。。我有两张桌子。。。表A类似

|ID | Field 1| Field 2 |
------------------------
| 01 | ASD    | SDF     |
------------------------
| 02 | ghg    | OOi     |
------------------------

B就像

------------------------
|ID | Field A | Field B |
-------------------------
| 1 | XYZ     | AB01    |
| 2 | XYZ     | AB02    |
-------------------------

现在在字段B中的表B值-AB01这里01是表A的ID的值。

现在我的问题是如何在A和B表中使用内部联接

喜欢来自B内部联接表A打开???[On Clause中会有什么…??]

假设ID是介于0199:之间的字符串

select  *
from    TableA a
join    TableB b
on      a.id = substring(b.FieldB, 3, 2)
Try this
DECLARE @RESULT TABLE
(        
        ID      INT, 
        Field_1 varchar(10),
        Field_2 varchar(10)
)        
INSERT @RESULT VALUES
(01, 'ASD','SDF')
,(02, 'ghg','OOi')
DECLARE @RESULT1 TABLE
(        
        ID      INT, 
        Field_a varchar(10),
        Field_b varchar(10)
)        
INSERT @RESULT1 VALUES
(01, 'xyz','ab01')
,(02, 'xyz','ab02')
select * from  @RESULT r1 inner join @RESULT1 r2
on right(r2.Field_b,2)=r1.id 

您可以使用SUBSTRING函数,如:

SELECT * FROM TableA a
INNER JOIN TableB b ON a.id = SUBSTRING(b.FieldB, 3, 2)

这将返回所有记录。

mysql中的SUBSTRING有三个参数。

  • 您的字段名称
  • 起点(要从哪里开始)
  • 长度(需要多少个字符)

类似:

SUBSTRING( string, start_position, [ length ] ) 

SUBSTRING( string FROM start_position [ FOR length ] )

//像这个

SELECT * FROM TableNAme INNER JOIN SecondTableName ON TableName.ID=SecondTableName.ID;