J'ai deux tables:
Tableau 1: Sociétés (ID, Nom) Tableau 2: Vacances (ID, Comparaison, Nom) P>
Actuellement, les entreprises ont des données, mais les vacances pas. Je veux parcourir toutes les entreprises, obtenir leur identifiant et insérer deux records en vacances pour chaque entreprise. Cela serait donc avant et après: p>
Avant: P>
Holidays: | id | companyId | name | | 0 | 0 | holiday1 | | 1 | 0 | holiday2 | | 2 | 1 | holiday1 | | 3 | 1 | holiday2 |
3 Réponses :
Assumer les vacances.Id est défini sur Auto Incrément:
insert into Holidays (select id as companyId, 'holiday1' as name from Companies); insert into Holidays (select id as companyId, 'holiday2' as name from Companies);
Vous ne pouvez pas forcer une valeur incrémentée automatique pour commencer à partir de zéro: Réponse associée
Oui. J'ai des problèmes avec ça. Comment puis-je éviter ça? Il dit que le nombre de colonnes ne correspond pas à la valeur de valeur si je ne fournis aucune valeur pour l'incrément automatique, la colonne ID est définie comme AI
Vous avez besoin d'un auto-join pour Sociétés code> Table et une logique d'itération pour produire des valeurs de colonne
ID code> pour
Vacances CODE>. Alors, envisagez d'utiliser:
Je pense que vous voulez:
insert into holidays (id, companyId, name) select (@rn := @rn + 1) as id, c.companyId, h.name from companies c cross join (select 1 as ord, 'holiday1' as name union all select 2 as ord, 'holiday2' ) h cross join (select @rn := 0) params order by c.companyId, h.ord;