如何在mysql中合并两个查询

时间:2017-09-04 14:35:33

标签: mysql merge

我已尝试过herehereherehere

中显示的解决方案

但没有成功,以下是我要转换为一个的两个问题:

Q 1

SELECT c.corpus_initial 
FROM 
(SELECT SUBSTRING_INDEX(corpus, '_', 1) AS corpus_initial 
FROM corpus_info WHERE corpus 
 IN 
(SELECT corpus FROM corpus_alignments)) c GROUP BY c.corpus_initial

Q2

SELECT c.title_initial 
FROM 
(SELECT SUBSTRING_INDEX(title, ' (', 1) AS title_initial
FROM corpus_info WHERE corpus 
IN 
(SELECT corpus FROM corpus_alignments)) c GROUP BY c.title_initial

更新

一些数据:表 corpus_info 有很多字段,但两个重要字段是语料库标题,首先我将结果与表 corpus_alignments ,所以如果数据在后面的表格中,那么我会取出结果的最后一部分并给它们留下精力....

table corpus_info

|    corpus   |             title             |
_______________________________________________ 
| btdeucat_de | BancTrad Deutch-Catalan (de)  |
_______________________________________________
| btdeucat_ca | BancTrad Deutch-Catalan (ca)  |
_______________________________________________
| btengspa_en | BancTrad English-Spanish (en) |
_______________________________________________
| btengspa_sp | BancTrad English-Spanish (sp) |
_______________________________________________

所以从列语料库我得到:btdeucat和btengspa没有_xx而且没有重复 从列标题我得到:BancTrad Deutch-Catalan和BancTrad英语 - 西班牙语没有(xx)而且没有重复

1 个答案:

答案 0 :(得分:0)

您可以先将2个特殊字符替换为其他特殊字符,然后根据该字符选择数据,如果您的表格中没有表格中的第3个字符。像这样的东西 -

SELECT c.corpus_initial 
FROM (SELECT SUBSTRING_INDEX(REPLACE(REPLACE(corpus,'_','@'),'(','@'), '_', 1) AS corpus_initial 
      FROM corpus_info 
      WHERE corpus IN (SELECT corpus 
                       FROM corpus_alignments)
     ) c 
GROUP BY c.corpus_initial

希望这有帮助。