MySql - 子查询无法正常工作
MySql - SubQuery is not working properly
如果查询正确,BubQuery 总是return空结果。
第一次查询:
SELECT * FROM `user` WHERE user_age IN(1,22,34);
结果:
第二次查询:
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
结果:
我正在尝试:
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');
Sqlfiddle: http://sqlfiddle.com./#!9/d6515f/3 //This is a sample table.
上面的查询总是return空行。
但是每个查询 return 如果其 运行 单个结果。
真的不知道哪里出错了。
请更新答案或建议我。
SELECT *
FROM user
WHERE user_age IN
(SELECT user_age_list user_age
FROM user_detail
WHERE id='1');
这里不需要组连接。引擎知道结果集是一个没有组 concat 的包含列表。
它试图做的是将“1、22、34”与每个 user_age 进行比较,这就是为什么您得不到结果的原因。
1 <> '1,22,34'
22 <> '1,22,34'
34 <> '1,22,34'
因此没有结果。
避免使用 GROUP_CONCAT
SELECT *
FROM `user`
WHERE user_age IN(SELECT user_age_list FROM `user_detail` WHERE id='1');
已更新
SELECT *
FROM `user` u
WHERE EXISTS (SELECT 1 FROM `user_detail` ud WHERE id='1' AND ud.user_age_list = u.user_age)
如果查询正确,BubQuery 总是return空结果。
第一次查询:
SELECT * FROM `user` WHERE user_age IN(1,22,34);
结果:
第二次查询:
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
结果:
我正在尝试:
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');
Sqlfiddle: http://sqlfiddle.com./#!9/d6515f/3 //This is a sample table.
上面的查询总是return空行。 但是每个查询 return 如果其 运行 单个结果。 真的不知道哪里出错了。 请更新答案或建议我。
SELECT *
FROM user
WHERE user_age IN
(SELECT user_age_list user_age
FROM user_detail
WHERE id='1');
这里不需要组连接。引擎知道结果集是一个没有组 concat 的包含列表。
它试图做的是将“1、22、34”与每个 user_age 进行比较,这就是为什么您得不到结果的原因。
1 <> '1,22,34'
22 <> '1,22,34'
34 <> '1,22,34'
因此没有结果。
避免使用 GROUP_CONCAT
SELECT *
FROM `user`
WHERE user_age IN(SELECT user_age_list FROM `user_detail` WHERE id='1');
已更新
SELECT *
FROM `user` u
WHERE EXISTS (SELECT 1 FROM `user_detail` ud WHERE id='1' AND ud.user_age_list = u.user_age)