如何使用 mySQL 视图和更新来更改 table
How to use mySQL view and UPDATE to change a table
mySQL几乎是个菜鸟,但我会尽可能清楚地解释我所做的事情。
所以我使用以下数据在 mySQL 中创建了一个视图。这 returns 返回当月出生的成员的详细信息。我把它命名为birthdays_thismonth。
SELECT member.member_id,CONCAT(person.firstname,' ', person.surname) AS 'Member Name',
FLOOR(DATEDIFF(CURRENT_DATE,member.registration_date)/365) AS 'Years Member For', person.DOB
FROM person
JOIN member ON member.person_id = person.person_id AND MONTH(DOB) = MONTH(CURRENT_DATE)
现在,使用此数据,我希望能够使用名为 "birthday_discount" 的列更新成员 table。
我无法完成查询,因为它似乎不喜欢我正在尝试更新 select 查询从中提取的内容这一事实。
update member SET member.birthday_discount = 'b'
WHERE member.member_id IN
(SELECT member.member_id FROM member
INNER JOIN birthday_thismonth ON member.member_id = birthday_thismonth.member_id)
看来我想从会员那里读得太多了,而且越来越糊涂了,但我无法从研究中找到一种方法来做到这一点。任何关于我做错了什么的指示都将不胜感激,因为单个查询工作正常,只是放在一起时不行。谢谢。
我想你只是想要一个相关的子查询或 join
:
update member m join
birthday_thismonth btm
on m.member_id = btm.member_id
set m.birthday_discount = 'b';
mySQL几乎是个菜鸟,但我会尽可能清楚地解释我所做的事情。
所以我使用以下数据在 mySQL 中创建了一个视图。这 returns 返回当月出生的成员的详细信息。我把它命名为birthdays_thismonth。
SELECT member.member_id,CONCAT(person.firstname,' ', person.surname) AS 'Member Name',
FLOOR(DATEDIFF(CURRENT_DATE,member.registration_date)/365) AS 'Years Member For', person.DOB
FROM person
JOIN member ON member.person_id = person.person_id AND MONTH(DOB) = MONTH(CURRENT_DATE)
现在,使用此数据,我希望能够使用名为 "birthday_discount" 的列更新成员 table。
我无法完成查询,因为它似乎不喜欢我正在尝试更新 select 查询从中提取的内容这一事实。
update member SET member.birthday_discount = 'b'
WHERE member.member_id IN
(SELECT member.member_id FROM member
INNER JOIN birthday_thismonth ON member.member_id = birthday_thismonth.member_id)
看来我想从会员那里读得太多了,而且越来越糊涂了,但我无法从研究中找到一种方法来做到这一点。任何关于我做错了什么的指示都将不胜感激,因为单个查询工作正常,只是放在一起时不行。谢谢。
我想你只是想要一个相关的子查询或 join
:
update member m join
birthday_thismonth btm
on m.member_id = btm.member_id
set m.birthday_discount = 'b';