为了澄清这个问题:我有一个与客户的表,其中包括first_name和last_name以及address_id。现在我必须创建一个新的电子邮件列表,这些邮件是由名字、姓氏和城市组成的: firstname.lastname@city.com,我正在使用sakila数据库--如果这有什么帮助的话,有人能向我解释一下,我是怎么做到的?提前感谢!
发布于 2021-12-25 22:26:42
customer表有名字和姓氏,但没有城市。
但是它有一个address_id,所以我们可以连接到address表。
address表也没有城市名称,但它有一个city_id。
所以我们把城市表和地址表连接起来。
现在,随着所需的部分可用,新的电子邮件可以构建。
select replace(
lower(
concat(cust.first_name, '.', cust.last_name, '@', city.city, '.com')
), ' ', '_') as new_email
from customer cust
join address addr
on addr.address_id = cust.address_id
join city
on city.city_id = addr.city_id
order by new_email;
有些城市有空间,所以他们被取代了。
发布于 2021-12-25 22:31:11
您可以使用mysql concat
函数将这些列连接到电子邮件中。
concat(first_name, '.', last_name, '@', city, '.com')
您还需要从所有涉及的列中删除空格,以便使用replace
函数生成有效的电子邮件。
知道了这一点,只需加入三个表--客户、地址和城市--就可以得到所有需要的列。
select first_name, last_name,
concat(REPLACE(first_name, ' ', ''), '.', REPLACE(last_name, ' ', ''), '@', REPLACE(city, ' ', ''), '.com') as email
from customer c inner join address a on c.address_id = a.address_id
inner join city ct on a.city_id = ct.city_id
https://stackoverflow.com/questions/70483005
复制相似问题