咨询大家:mysql语句问题:为什么查询子句的结果(a,b)不能在IN子句中不起作用呢?

-- mysql语句问题:为什么查询子句的结果(a,b)不能在IN子句中不起作用呢?

百思不得解。

select * from orders where productid in

((select productid from products))



test1.sql(示例数据)


解决方法1:很麻烦,没人愿意这样干的

参见:mysql下将分隔字符串转换为数组

https://www.cnblogs.com/waban/p/5196267.html

call splitString((select productid from products),",");  

select * from orders where productid in

(select * from tmp_split)


解决方法2:

select * from orders where find_in_set(productid,(select productid from products))

alu 发布于 2019-6-21 17:39 (编辑于 2019-6-25 17:02)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
4
zsh331Lv8专家互助
发布于2019-6-22 09:06
select * from orders where productid in
-- ('a','b')
(select productid from products)


why。。。why。。。

子查询你为什么要画蛇添足,用二个括号!

image.png

  • alu alu(提问者) select * from orders where productid in -- (\'a\',\'b\') (select productid from products) 还是不出结果,你试过吗?这和括号没有关系的。
    2019-06-24 09:27 
最佳回答
1
doudekaixinLv6中级互助
发布于2019-6-24 10:24

你这种数据存储的方式怎么可能查询的到结果。

a='a','b'?

b='a','b'?

这能相等?不相等怎么能查到?

想要实现你要的效果。SQL不是这样写的。


最佳回答
0
cherry团子Lv6中级互助
发布于2019-6-22 08:42

products 中的字段存储改成 a,b而且分两行才有效果,把他放在一条记录里面,就是一个字段值了,对吧,不会把它当成'a' 和'b'看    会当成''a','b'',然后你的orders 表里面没有 'a','b' 这个字段值

  • alu alu(提问者) 数据就是这样存储的。我的问题是在这样的数据下,查询语句为何没结果,纯技术探讨。
    2019-06-24 09:29 
  • alu alu(提问者) 明白人!
    2019-06-25 16:43 
  • cherry团子 cherry团子 回复 alu(提问者) 啥?
    2019-06-25 16:44 
  • 4关注人数
  • 711浏览人数
  • 最后回答于:2019-6-25 17:02
    请选择关闭问题的原因
    确定 取消
    返回顶部