作为返回包含几个逗号分隔值php mysql的记录

时间:2016-08-19 10:10:49

标签: php html mysql

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尝试过,但两者都没有。我应该......帮助

1 个答案:

答案 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

将这样的表格规范化可能看起来像是一项额外的工作。但是如果你的应用程序扩展,那么这样做会快几万倍。严重。