Mysql 向数据库的每个条目添加数据的命令?

Mysql 向数据库的每个条目添加数据的命令?,mysql,Mysql,如果这是一个愚蠢或简单的问题,我表示歉意,我已经尝试寻找它,但无法找到解决方案;我想我根本不知道这种手术的名字 我有一个MySQL数据库和一个“卡片”表 卡片有铸造成本,可能包含0到5种颜色。我想更新cards表中的每个条目,使其包含5列,每个列对应于每个可能的颜色都是布尔值。所以我需要一个简短的算法来解析卡片中的颜色,然后相应地填充5个布尔颜色值 我可以想象如何用PHP脚本实现这一点,但我认为一定有一些方法可以用纯MySQL实现这一点。我弄错了,或者这类脚本有名字吗?我理解您的问题是,您的卡表

如果这是一个愚蠢或简单的问题,我表示歉意,我已经尝试寻找它,但无法找到解决方案;我想我根本不知道这种手术的名字

我有一个MySQL数据库和一个“卡片”表

卡片有铸造成本,可能包含0到5种颜色。我想更新cards表中的每个条目,使其包含5列,每个列对应于每个可能的颜色都是布尔值。所以我需要一个简短的算法来解析卡片中的颜色,然后相应地填充5个布尔颜色值


我可以想象如何用PHP脚本实现这一点,但我认为一定有一些方法可以用纯MySQL实现这一点。我弄错了,或者这类脚本有名字吗?

我理解您的问题是,您的
表当前有一个名为
铸造成本
的列,其中包含一组颜色,例如
红色、绿色
蓝色、橙色,黄色“
,并且您正在查找一个查询,该查询生成布尔列,指示每个可能的颜色是否在
铸造成本中

如果是这样的话,MySQL的函数应该为您提供您想要的:

SELECT *,
       FIND_IN_SET('red',    `casting cost`) > 0 AS red,
       FIND_IN_SET('blue',   `casting cost`) > 0 AS blue,
       FIND_IN_SET('green',  `casting cost`) > 0 AS green,
       FIND_IN_SET('orange', `casting cost`) > 0 AS orange,
       FIND_IN_SET('yellow', `casting cost`) > 0 AS yellow
FROM   card
如果要永久更改表以包含这些列,请执行以下操作:

ALTER TABLE card
  ADD COLUMN red    BOOLEAN NOT NULL DEFAULT FALSE,
  ADD COLUMN blue   BOOLEAN NOT NULL DEFAULT FALSE,
  ADD COLUMN green  BOOLEAN NOT NULL DEFAULT FALSE,
  ADD COLUMN orange BOOLEAN NOT NULL DEFAULT FALSE,
  ADD COLUMN yellow BOOLEAN NOT NULL DEFAULT FALSE

UPDATE card SET
  red    = FIND_IN_SET('red',    `casting cost`) > 0,
  blue   = FIND_IN_SET('blue',   `casting cost`) > 0,
  green  = FIND_IN_SET('green',  `casting cost`) > 0,
  orange = FIND_IN_SET('orange', `casting cost`) > 0,
  yellow = FIND_IN_SET('yellow', `casting cost`) > 0

你能给我们举一些例子说明你的数据是什么样的,预期的结果是什么吗?我也不清楚。。。我们需要更多的信息,你能更具体一点吗?我想这是正确的路线,谢谢!我应该更清楚“铸造成本”——它的格式可能更像“RGB”,红色、绿色和蓝色。没有逗号,所以它不是一个合适的集合。@myingling:在这种情况下,您必须使用:例如
LOCATE('R','casting cost')>0