Как добавить несколько значений в столбец в mysql

Это мой запрос на создание таблицы

CREATE TABLE `result` (
  `id` int(11) NOT NULL,
  `l_id` varchar(25) NOT NULL,
  `lname` varchar(200) NOT NULL,
  `first_prize` varchar(9) DEFAULT NULL,
  `consolation_prize` varchar(9) DEFAULT NULL,
  `second_prize` varchar(9) DEFAULT NULL,
  `third_prize` varchar(9) DEFAULT NULL,
  `fourth_prize` int(11) DEFAULT NULL,
  `fifth_prize` int(11) DEFAULT NULL,
  `sixth_prize` int(11) DEFAULT NULL,
  `seventh_prize` int(11) DEFAULT NULL,
  `eigth_prize` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

и это запрос вставки значений

INSERT INTO `result` (`id`, `l_id`, `lname`, `first_prize`, `consolation_prize`, `second_prize`, `third_prize`, `fourth_prize`, `fifth_prize`, `sixth_prize`, `seventh_prize`, `eigth_prize`) VALUES
(1, '1', 'Win-Win', 'WO-878475', 'WO-878474', 'WO-878477', 'WO-878455', 8474, 8477, 8412, 8473, 8689),
(2, '2', 'KARUNNYA', NULL, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL),
(3, '3', 'SOUBHAGYA', 'WE-878656', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(4, '4', 'SREE SAKTHI', 'NB-750180', 'NE-750180', 'KO-594630', 'KF-678534', 6786, 4356, 2456, 4566, 7657);

проблема в том, что я не могу вставить несколько значений ни в один из столбцов, таких как first_prize, second_prize, third_prize и т. д. Как это сделать, пожалуйста, помогите мне, я понятия не имею, и я новичок во всем этом.

Понятия не имею, чего вы пытаетесь достичь. Вы хотите вставить несколько значений в один столбец?

Robby Cornelissen 11.04.2018 12:14

Мне кажется, тебе не следует этого делать. Столбцы предназначены для отдельных значений данной строки. Таким образом, у вас либо должно быть больше столбцов для размещения других данных (если они отличаются друг от друга), либо больше строк для размещения тех же данных для другого пользователя или чего-то еще. Вы можете сделать это с помощью разделителя или перечисления, но если вы действительно не знаете проблемы, которые это вызывает, вы, вероятно, не захотите это делать.

James 11.04.2018 12:15

Вам нужно больше пояснений, ваш вопрос непонятен.

abrar 11.04.2018 12:16

Что вы имеете в виду под фразой «Я не могу вставить несколько значений ни в один из столбцов». Столбцы содержат отдельные значения. Изучите основы и измените формулировку вопроса

Kedar Limaye 11.04.2018 12:19

Мне нужно ввести два разных значения (например, WO-878475, WE-878475) в столбец first_prize.

Jacob V T 11.04.2018 12:22

Есть ли какой-нибудь альтернативный способ сделать это ??

Jacob V T 11.04.2018 12:23

Вам поможет какой-нибудь из ответов?

James 11.04.2018 21:42
0
7
49
3

Ответы 3

ВСТАВИТЬ результат (id, l_id, lname, first_prize, consolation_prize, second_prize, third_prize, 4th_prize, Friday_prize, sixth_prize, седьмые_prize, eigth_prize) ЗНАЧЕНИЯ (1, '1', 'Win-Win', 'WO-878475, WO-878474, WO-878477', NULL, NULL, 'WO-878455', 8474, 8477, 8412, 8473, 8689);

увеличить длину колонны.

Увеличить длину столбца до чего? Это одна из многих проблем, связанных с объединением нескольких значений в одно поле. Вы не знаете, какие данные у вас есть. Это должен быть varchar (50)? Или сделать 250 «на всякий случай»?

James 11.04.2018 12:35

Я предлагаю вам использовать «2», последний вариант в моем ответе.

i need to enter two different values(ie,WO-878475,WE-878475) in the column first_prize

Чтобы напрямую ответить на ваш вопрос, у вас может быть разделитель между значениями (например, | или запятая), а затем, когда вы выбираете данные поля, которые вы разделяете на основе вашего разделителя. Это в 99% случаев плохой подход к дизайну, это действительно так.

Я искренне предлагаю вам вместо этого подумать о небольшом изменении дизайна и сделать либо:
1)
Добавьте дополнительные поля, например first_prize_1 и first_prize_2. Это, вероятно, не лучший способ, но я не знаю всех ваших настроек - это вызовет проблемы с обслуживанием, если вам понадобится другой в будущем, например first_prize_3, но намного лучше, чем несколько значений в одном поле.

2)
Вероятно, это лучший способ - создать новую таблицу prizes и иметь поля:

id  
prize_id  
prize_level (this will be 1, 2, 3 etc for first prize and so on)  
competition_id

Затем просто создайте строку для каждого приза для каждого соревнования и выберите все для Competition_id, а поля позволят вам указать, какой это приз и т. Д.

Таким образом, поле id автоматически увеличивается для уникального идентификатора строки. Тогда строки будут выглядеть так:
id = 1; prize_id = WO-878475; prize_level = 1; competition_id = 1;
id = 2; prize_id = WE-878475; prize_level = 1; competition_id = 1;

Затем вы выбираете, где competition_id = 1, и получаете все возможные призы для этого соревнования с pri_id и pri_levels (1-й, 2-й и т. Д.). Таким образом, в соответствии с приведенным выше примером у вас может быть более одного первого приза, а поскольку строки бесконечны, вы можете иметь столько или меньше призов, сколько вам нужно для каждого соревнования, и, следовательно, не ограничены полями, которые у вас есть в таблице. (например, поле first_prize, second_prize и т. д.).

пожалуйста, объясните 2-й метод более подробно.

Jacob V T 11.04.2018 12:49

Я обновил свой ответ, чтобы добавить дополнительную информацию о том, как это будет работать. Если вам нужно что-то конкретное, дайте мне знать

James 11.04.2018 13:28

MySQL - это реляционная база данных. Предлагаю вам использовать две таблицы. Первый event будет содержать данные о событиях (id и name и т. Д.), Второй может быть структурирован следующим образом:

  `event_id` varchar(25) NOT NULL,
  `winner` varchar(9) NOT NULL,
  `prize_type` int(11) NOT NULL,

Затем вы можете определить свои ключи, например:

0 = consolation prize
1 = first prize
2 = second prize
etc..

Другие вопросы по теме