新手在这里使用SQL。所以我有两个表,让我们以下面的两个表为例。

表A

set_num   s_id   s_val
100        3      AA
100        5      BB
200        3      AA
200        9      CC


表B

s_id    s_val    phrase        seq
1        DD      'hi'         'first'
3        AA      'hello'      'first'
6        EE      'goodnight'  'first'
5        BB      'world'      'second'
9        CC      'there'      'second'
4        FF      'bye'        'first'


我想将表A和表B放在两列上,例如组合键(s_id,s_val),然后返回
表A中的set_num和表B中的短语的串联(我们将其称为Whole_phrase,concat(...)AS Whole_phrase)。
串联还应遵循短语串联的顺序。这将由表B中的每个短语的seq列确定。 “第一”将指示该短语需要排在第一,“第二”则是第二。我想使用SELECT查询来做到这一点,但不确定在不复杂的情况下是否可行。我可以在SELECT中执行此操作,还是需要其他方法?

预期产量:

set_num    entire_phrase
100        'hello world'
200        'hello there'


并不是

set_num    entire_phrase
100        'world hello'
200        'there hello'


任何帮助/方法将不胜感激!

最佳答案

您可以这样做:

select temp1.set_num, concat(phrase1,' ',phrase2) as entire_phrase
from (
(
select set_num, b.phrase as phrase1
from TableA as A
join TableB as B
on a.s_id = b.s_id
and a.s_val = b.s_val
and b.seq = 'first'
) as temp1
join
(
select set_num, b.phrase as phrase2
from TableA as A
join TableB as B
on a.s_id = b.s_id
and a.s_val = b.s_val
and b.seq = 'second'
) as temp2
on temp1.set_num = temp2.set_num
)


在这里运行:http://sqlfiddle.com/#!9/d63ac3/1

10-05 19:43