0

我是 SQL 新手,尽管搜索了数小时,但我无法根据付款表中的条件找出 SQL 查询来更新我的成员表中的记录。我很困惑我是使用 JOIN (如果是的话)还是子查询?

这是我到目前为止所拥有的:

UPDATE wp_mcra_members

SET  wp_mcra_members.dues_paid = 1

JOIN wp_mcra_payments ON wp_mcra_payments.member  = wp_mcra_members.ID 

WHERE wp_mcra_payments.year_paid = '2013' and wp_mcra_payments.reason = 'Dues';

我希望数据库搜索 Payments 表中符合我的条件为 2013 年并标记为会费的任何记录。然后我希望成员表根据匹配这些条件的任何找到的记录更新字段费用,其中成员 ID = 付款成员

4

2 回答 2

1

update带有 a的语法join因数据库而异。这是在子句中使用子查询的通用语法where

UPDATE wp_mcra_members
    SET dues_paid = 1
    where wp_mcra_members.id in (select wp_mcra_payments.member
                                 from wp_mcra_payments
                                 WHERE wp_mcra_payments.year_paid = '2013' and
                                       wp_mcra_payments.reason = 'Dues'
                                ) ;
于 2013-06-05T02:57:02.723 回答
0

如果您使用的是 SQL Server,您提供的语法看起来会起作用。Oracle 不支持JOINswith UPDATE,而是考虑使用MERGE或 Gordon 的答案也可以在那里工作。

但是,假设您使用的是 MySQL,JOINUPDATE语句中的 a 可能比 using 具有更好的性能IN

UPDATE wp_mcra_members
    JOIN wp_mcra_payments ON wp_mcra_payments.member = wp_mcra_members.ID 
SET  wp_mcra_members.dues_paid = 1
WHERE wp_mcra_payments.year_paid = '2013' 
    and wp_mcra_payments.reason = 'Dues';
于 2013-06-05T03:10:45.167 回答