MYSQL如何进行sql like (sql查询结果)的查询

我有个需求,需要在MYSQL下like查询另一条sql查询的结果,大概格式如下:select*fromtable1where`text`like'%(selectname... 我有个需求,需要在MYSQL下like查询另一条sql查询的结果,大概格式如下:
select * from table1 where `text` like '%(select name from table2 where id =3)%';

请问如何才是正确格式?谢谢
正确答案已出:使用CONCAT
SQL语句为:select * from table1 where `text` like CONCAT('%',(select name from table2 where id =3),'%');
感谢没有留名的热心网友,我看在网上问这个问题的不少,但都没有正确答案
************************************

感谢大家的热心,不过请大家在回答前最好自己试下能否在MYSQL下通过
我总结下几种不能达到效果的SQL
1:select * from table1 where `text` like (select name from table2 where id =3);
2:select * from table1 where `text` like '%'(select name from table2 where id =3)'%';
3:select * from table1 where `text` like '%' + (select name from table2 where id =3) +'%';
4:select * from table1 where `text` like '%(select name from table2 where id =3)%';
5:select * from table1 where `text` like '%’select name from table2 where id =3‘%';

6:select * from table1 where `text` like '%(
select name from table2 where id =3
) +'%';(第二条SQL单独占一行)
展开
 我来答
匿名用户
2012-12-26
展开全部
select *
from table1
where
`text` like CONCAT( '%' , (select name from table2 where id =3), '%' );

这样看看, 行么?

CONCAT 是 mysql 中函数, 用于连接字符串的。

CREATE TABLE table1 (
`text` varchar(10)
);

CREATE TABLE table2 (
id int,
name varchar(10)
);

INSERT INTO table1 VALUES ('我爱家');
INSERT INTO table2 VALUES (3, '爱');

select *
from table1
where
`text` like CONCAT('%', (select name from table2 where id =3), '%' );

+--------+
| text |
+--------+
| 我爱家 |
+--------+
1 row in set (0.00 sec)
大范甘迪任天堂
2012-12-26
知道答主
回答量:6
采纳率:0%
帮助的人:9229
展开全部
select * from table1 where text(table1的字段) like '%(select name from table2 where id = 3 and rownum <2)%'

select name from table2 where id = 3 这句话查询的结构必须是一行或是空行,否则就不对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4everlovehj
2012-12-26 · TA获得超过319个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:191万
展开全部
select * from table1 where text like (select name from table2 where id =3);
这样子就对了。text应该是一个字段名。
追问
你这样修改后,就不是我需要的SQL了,因为我并不是完全匹配,而是局部匹配
比如,按照我的理想设计,table1的text值为“我爱家”,从tabel2查询到的name结果为"爱",那么按照你的方式,就查询不出来了
追答
select * from table1 where text like concat('%',(select name from table2 where id =3),'%');
这样子就对了。呵呵。你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
载昊君
2012-12-26 · TA获得超过151个赞
知道答主
回答量:48
采纳率:0%
帮助的人:39.8万
展开全部
你语法错了,试试
SELECT * FROM table1 WHERE `text` LIKE '%' + (SELECT name FROM table2 WHERE id =3) + '%';
追问
我在提问前,已经在网上查了资料,你这种方式我已经试过了,是不行的,会直接报错,我也不清楚怎么回事,你如果本机有MYSQL环境,建议试一下,应该也是不行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DoramiHe
2017-10-28 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59543
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
select *
from table1
where
`text` like CONCAT( '%' , (select name from table2 where id =3), '%' );

这样看看, 行么?

CONCAT 是 mysql 中函数, 用于连接字符串的。

CREATE TABLE table1 (
`text` varchar(10)
);

CREATE TABLE table2 (
id int,
name varchar(10)
);

INSERT INTO table1 VALUES ('我爱家');
INSERT INTO table2 VALUES (3, '爱');

select *
from table1
where
`text` like CONCAT('%', (select name from table2 where id =3), '%' );

+--------+
| text |
+--------+
| 我爱家 |
+--------+
1 row in set (0.00 sec)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式