我想知道是否有任何值1,2,3,4,5存在于具有记录4,5,7,8,6的表的列中
我正在使用find in sets但它没有提供正确的结果
import colander
class Image(colander.MappingSchema):
url = colander.SchemaNode(colander.String())
width = colander.SchemaNode(colander.Int())
height = colander.SchemaNode(colander.Int())
class Post(colander.MappingSchema):
id = colander.SchemaNode(colander.Int())
text = colander.SchemaNode(colander.String())
score = colander.SchemaNode(colander.Int())
created_time = colander.SchemaNode(colander.Int())
attachedImage = Image() # I want to make this as optional
在上面的查询中,我想查找列中任何一行中是否存在任何值1,2,3,4,5
答案 0 :(得分:-1)
目前尚不完全清楚,但我从您的问题中推断出:
tb_grp
的表格,其中包含字段id
和u_id
u_id
字段包含以逗号分隔的ID列表例如:
+----+---------+
| id | u_id |
+----+---------+
| 1 | 4,5,6,7 |
| 2 | 1,8,5,9 |
| 3 | 3,4,7,8 |
+----+---------+
u_id
包含以下其中一个':1,2,3,4 or 5
在MySQL中,运行以下查询:
SELECT id AS grp_id from tb_grp
WHERE CONCAT(u_ids,",") REGEXP "(1,|2,|5,|9,)";
会回来:
+--------+
| grp_id |
+--------+
| 1 |
| 2 |
+--------+
现在,我几乎没有接近codeigniter几年,但我希望以下情况应该有效:
$where = "CONCAT(u_ids,',') REGEXP '(1,|2,|3,|4,|5,)';
$query = $this->db->select('id AS grp_id')
->where($where)
->get('tb_grp');
$data = $query->result_array();
尝试解释此
你有一个字符串,其中包含除了(可能)列表中最后一项之外的所有数字的逗号。我们要去RegEx搜索列表,但搜索" 2,"如果列表中的最后一个是' 2' (因为它没有以下逗号)。如果我们搜索" 2"如果没有逗号,我们就会在' 12',' 20'等等。因此,使这个健壮的最佳方法是将逗号连接到列表的末尾,然后搜索" 1,"或" 2,"或" 3,"等等。
我希望这会有所帮助,或者至少让你接近你想要实现的目标