我的数据库中有两个表表 A 和表 B -
Table `A`
SN | Order1 | Order2 | Text
(INT) | (TINYINT) | (TINYINT) | (VARCHAR)
1001 | 1 | 1 | ABC
1001 | 1 | 2 | DEF
1001 | 1 | 3 | GHI
1001 | 2 | 1 | IOU
1001 | 3 | 1 | JKL <--
1001 | 3 | 2 | LMO
1001 | 3 | 3 | UTF
....
1021 | 1 | 1 | ZXC
1021 | 1 | 2 | QWE
1021 | 2 | 1 | JKL <--
1021 | 3 | 1 | YOU
在另一张桌子上
Table `B`
SN | Order1 | rSN | rOrder1
1021 | 2 | 1001 | 3
现在当我查询1021
结果的数据时应该是这样的: -
Result Needed
1 | 1 | ZXC
1 | 2 | QWE
2 | 1 | JKL
2 | 2 | LMO
2 | 3 | UTF
3 | 1 | YOU
目前我正在尝试这样的事情 -
SELECT `SN`, `Order1`, `Order2`, `Text` FROM `Table A`
WHERE `SN`=1012
UNION
SELECT `SN`, `Order1`, `Order2`, `Text` FROM `Table A`
WHERE `Table A`.`SN`
IN (SELECT `rSN` FROM `Table B` WHERE `SN`=1021)
AND `Table A`.`Order1`
IN (SELECT `Order1` FROM `Table B` WHERE `SN`=1021)
哪个给出了这样的结果:-
Result
SN | Order1 | Order2 | Text
1021| 1 | 1 | ZXC
1021| 1 | 2 | QWE
1021| 2 | 1 | JKL
1021| 3 | 1 | YOU
1001| 3 | 1 | JKL
1001| 3 | 2 | LMO
1001| 3 | 3 | UTF
我应该怎么做才能使Order1
结果Order2
的最后三行与引用行相同,例如1001 | 2 | 2 | LMO
编辑 - -
在这里,我想获得与 查询给出数据输出时相同的Order1
值。1001
Order1
1012
因为顺序Text
很重要。
Order2 文本与其在此组中对应的第一个值相关,在 Order1 中并Table B
存储对数据库中已输入的重复相关文本的引用,并定义其在相应的位置SN