mysql - 每个项目的 MYSQL 插入
问题描述
也许我的问题很愚蠢,但是......在 mysql 中有没有办法(没有 php 或其他)为另一个表中的每个对象插入数据到一个表中?
例如:
Table: Items
Item 1 ItemClass 1
Item 2 ItemClass 2
Item 3 ItemClass 1
Table: File_Class
File 1 ItemClass 1
File 2 ItemClass 1
File 3 ItemClass 2
File 4 ItemClass 1
File 5 ItemClass 2
我可以只使用 MYSQL 将每个项目的项目/文件组合插入到 File_Status 表中,如下所示:?类似的东西
在最好的情况下,包括检查组合是否是唯一的并且不存在。
For Each Item in Table Items
- For Each File From File_Class Where ItemClass = ItemClass(in Items)
- Intert Into File Status itemID, FileID, status = open
Table: File_status
ID itemID File Status
1 Item 1 File 1 open
2 Item 1 File 2 open
3 Item 1 File 4 open
我知道如何用 php/mysql 做到这一点,但也许有一种方法可以只用一个查询来做到这一点。
感谢您的任何想法
解决方案
你的逻辑表明:
insert into file_status (itemId, file, status)
select i.itemId, fc.file, 'open'
from items i cross join
file_class fc;
但是,这会插入 15 行。如果你想“对齐”表格,那么你需要一些方法来加入它们。 row_number()
提供以下信息:
insert into file_status (itemId, file, status)
select i.itemId, fc.file, 'open'
from (select i.*, row_number() over (order by itemId) as seqnum
from items i
) i join
(select fc.*, row_number() over (order by file) as seqnum
from file_class fc
) fc
on i.seqnum = fc.seqnum;