2013-07-30 104 views
0

如何在MySql中构建以下语句,它将起作用?select-concat with in-Tag

select a,b,c from xx where a in concat(select y from abc where x='a','%'); 

注意:子查询返回多行!

|---A----| 
|/backup/| 
|/foto/ | 

而且a in concat应返回的所有项目子查询是类似于下面的示例:

|/backup/23/x.txt | 
|/backup/xx/asdf | 
|/backup/x.txt | 

这就是为什么我需要的CONCAT的原因!

+1

我试图理解,但我不能 –

+1

你可以包含'xx'和'abc'的一些样本表数据吗? –

+0

您可以使用group_concat函数生成预准备语句。或者一个REGEX函数可能会让你去你想去的地方。 –

回答

0

这是很难准确的告诉你是什么在这里后,因为您的示例数据似乎违背了你的问题,但我认为你需要使用EXISTS条款,而不是IN

SELECT a, b, c 
FROM xx 
WHERE EXISTS 
     ( SELECT 1 
      FROM abc 
      WHERE abc.x = 'a' 
      AND  xx.a LIKE CONCAT(abc.y, '%') 
     ); 

Example on SQL Fiddle