MySql多次在可能的情况下处于条件状态

时间:2016-06-28 04:37:14

标签: mysql

我正在表演@api.multi def open_tree_view(self): self.ensure_one() treeview_id = self.env.ref('external_id_of_treeview').id return { 'name': 'Title', 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'model.name', 'views': [(treeview_id, 'tree') 'target': 'current', 'domain' : [('id','in',search_ids)], ### in domain pass ids if you want to show only filter data else it will display all data of that model. }

这是我的查询。

查询应为:

MySQL query with Where In conditions

查询显示我的正确结果,完全没问题, 但我想做的是我们可以将所有id与个别条件分开吗?

或者查询对SELECT * FROM users WHERE id IN (44,44,33,44,33,0); 有多个Where In? 像

SELECT * FROM users WHERE id IN(44) AND id IN(45) AND id IN(46);

像这样。

这可能吗?吗

我在Laravel中执行查询的查询代码。

single column

2 个答案:

答案 0 :(得分:2)

如果没有其他原因,我会发布答案。我相信WHERE IN子句在内部转换为由OR分隔的一系列平等启动。所以你的原始查询

SELECT * FROM users WHERE id IN (44,44,33,44,33,0)

将在内部转换为此

SELECT * FROM users WHERE id = 44 OR id = 44 OR id = 33 OR id = 44 OR
                          id = 33 OR id = 0

因此,为IN子句设置一个数字将等同于单个相等条件。

顺便说一下,你有多次出现相同的数字,这没有任何意义。

答案 1 :(得分:0)

是的,可以有多个WHERE IN

SELECT * FROM users WHERE id IN (44) OR id IN (45) OR id IN (46);

这是正确的。

但是我不明白你为什么要这样做,因为与一个IN

相比,这个性能很低