【发布时间】:2011-10-05 18:14:14
【问题描述】:
我想选择包含给定 ID 和给定分支的记录,所以我想出了这个查询,我想知道这是否是写这个的正确方法
我正在使用 codeigniter
$orderids = array('2', '3');
$branch = array('branch1', 'branch2');
$this->db->where_in('order_id', $orderids);
$this->db->where_in('branch', $branch);
$query = $this->db->get('tbl_order_data');
这使得查询
SELECT *
FROM (`tbl_m_order_collection_data`)
WHERE `order_id` IN ('2', '3')
AND `branch` IN ('branch1', 'branch2')
我的桌子看起来像
+----+----------+-------------+-----------+
| ID | order_id | branch | item_code |
+----+----------+-------------+-----------+
| 1 | 1 | branch1 | 4R1 |
| 2 | 1 | branch2 | 4R11 |
| 3 | 1 | branch2 | ACS20x20 |
| 4 | *2 | branch1 | ACS20x27 |
| 5 | *2 | branch1 | ACS20x20 |
| 6 | 1 | branch1 | ACS20x20 |
| 7 | 2 | branch2 | ACS20x27 |
| 8 | *3 | branch2 | ACS20x20 |
+----+----------+-------------+-----------+
我正在尝试从表中获取星标记录。那么上面的查询是否有效?
【问题讨论】:
-
看起来不错?您尝试过吗?
-
yes 似乎工作正常,但我不知道 AND 在哪里和 IN 是如何工作的。这就是为什么我想问
-
请注意,编写的查询也将返回 ID 为 #7 的行,因为 '2' 在 (2,3) 中,而 'branch2' 在 (branch1,branch2) 中。
IN子句相互独立。 -
您提供的查询将选择您加星标的所有行以及第 7 行。您是否尝试获取
SELECT * FROM table WHERE (order_id = 2 AND branch = 'branch1') OR (order_id = 3 AND branch = 'branch2')(只会给您加星标的 3 行)? -
非常感谢,好像这就是我想要的查询
标签: php mysql codeigniter logic