我有两张桌子:
film with primary key film_id
actor with primary key actor_id
我现在想填写一张表格film_actor(film_id, actor_id)
,将每部电影与 250 个随机演员联系起来。所以每部电影应该有250个不同的演员。
在 PostgreSQL 中,我会这样做:
insert into film_actor(film_id, actor_id)
select film_id, actor_id
from film
cross join lateral
(
select actor_id
from actor
where film_id is not null -- to force lateral behavior
order by random()
limit 250
) as actor;
可以在此处找到 PostgreSQL 小提琴:https ://dbfiddle.uk/?rdbms=postgres_10&fiddle=6dc21a3ce3404aaf3f4453e2ee4f863b 。如您所见,每部电影都有不同的演员。
LATERAL JOIN
我在 MySQL v8 中找不到对 s 的支持。你怎么能在 MySQL v8 中做这样的构造?
可以在此处找到无法正常工作的 MySQL 小提琴:https ://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=6c1fb7df00cf8c73cbcca77752c9ef0d如您所见,每部电影都有相同的演员。