2017-05-31 100 views
-1

enter code here有什么办法可以将一个表的四个文本行合并为一个字符串吗?MySQL:将四个文本行合并为一个字符串

例如: 表-A(字),表-B(字),Table_C(字),Table_D(字),

+---------+---------+---------+---------+ 
| Table_A | Table_B | Table_C | Table_D | 
+---------+---------+---------+---------+ 
| this | is  | a  | test | 
+---------+---------+---------+---------+ 

我怎么能做出这样的查询:

select 'ok' 
from Table_A a, Table_B b, Table_C c, Table_D d 
where (a.word + ' ' + b.word + ' ' + c.word + ' ' + d.word = 'this is a test') 

编辑:我不能使用任何函数(如CONCAT())

+1

你正在做一个交叉连接在这里,按预期如果表中甚至一个有一个以上的记录可能无法正常工作。你能澄清你在这里做什么吗? –

+0

请参阅:[为什么我应该提供一个用于我认为是非常简单的SQL查询的MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 对于什么似乎对我来说是一个非常简单的sql查询) – Strawberry

+0

嗨。我注意到你从未接受过答案,但你也没有给出澄清,所以也许答案有帮助?如果是这样,你可以[接受](https://meta.stackexchange.com/a/5235/266284)来证明这一点。 – philipxy

回答

0

您可以尝试使用CONCAT()

SELECT 'ok' 
FROM Table_A a, Table_B b, Table_C c, Table_D d 
WHERE CONCAT(a.word, ' ', b.word, ' ', c.word, ' ', d.word) = 'this is a test' 

正如我在上面的评论中提到的那样,您在四个表格之间进行交叉连接,如果您计划在每个表格中有多个记录,则可能无法很好地扩展。

0

这是很奇怪的,但你似乎想concat_ws()

select 'ok' 
from Table_A a cross join 
    Table_B b cross join 
    Table_C c cross join 
    Table_D d 
where concat_ws(' ', a.word, b.word, c.word, d.word) = 'this is a test'; 
+0

OP似乎想要“一张桌子的三个文本行”。我在这里没有看到。 – Strawberry

+0

@Strawberry我认为你是从字面上理解问题的标题。戈登的回答似乎给了OP它想要的东西+1 –

+0

@TimBiegeleisen无可否认,这个问题并没有使整个事情变得有意义 - 这就是为什么我建议它被关闭。这就是说,我认为我们可以确定OP是指“一张桌子”,而不是四张。 – Strawberry

相关问题