Table example:
id - registro - valor
1 - compras - 1,2,6
2 - ventas - 3,4
3 - deudas - 5
4 - Something - 13,14,15,16,10
我在数据库中有这个表。我想做一个查询,我只发送数字3,然后我带寄存器2.在这个例子中。可以办到。 IN探测用和不用,我用CONTAINS尝试过,但两者都没有。我应该......帮助
答案 0 :(得分:1)
就像@Jens所说,你可以使用the FIND_IN_SET()
function来达到这个目的。
SELECT registro
FROM tbl
WHERE FIND_IN_SET('3', valor) > 0
而且,就像@Jens所说,这是糟糕的数据库设计。在一行的特定列中存储多个值会破坏RDMS系统中内置的许多优化。
你最好选择两张桌子:
主
master_id - registro
1 - compras
2 - ventas
3 - deudas
4 - Something
详细信息(注意这里每行只有一个valor
)
master_id - valor
1 - 1
1 - 2
1 - 6
2 - 3
3 - 4
etc.
然后你可以使用像这样的查询
SELECT master.registro
FROM detail
JOIN master ON master.master_id = detail.master_id
WHERE detail.valor = 3
将这样的表格规范化可能看起来像是一项额外的工作。但是如果你的应用程序扩展,那么这样做会快几万倍。严重。