我正在尝试使这个SQL(MySQL)更新第三个表,基于前两个数据。 我需要它的原因是,我们正在进行一些用户测试,因为我是唯一一个可以访问数据库的人,我需要一些方法来快速进行更改。前端开发人员要求进行这些更改。我当然可以通过电子邮件,找到user_account,然后找到第三个表,但它们是理想的,他们发送给我这个查询,我只是运行它。数据库是测试数据库,所以即使查询不好也不会造成任何损害。
简而言之。用户表通过user_id连接到user_account。并且hird表通过user_account_id连接。
我尝试过这个SQL,但它没有结果(0行受影响)执行。
SET @id1 = (SELECT id FROM users WHERE email = 'someemail@aaa.com');
SET @id2 = (SELECT id FROM user_accounts WHERE user_id = @id1);
UPDATE user_product_status AS ups
SET access_starts_at = '2022-04-03 08:52:58'
WHERE ups.user_account_id = @id2
答案 0 :(得分:1)
如何为您的查询使用联接
@Repository
public class SomeDAOImpl
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
答案 1 :(得分:1)
UPDATE user_product_status ups
INNER JOIN user_accounts ua ON ups.user_account_id = ua.id
INNER JOIN users u ON ua.user_id = u.id
SET ups.access_starts_at = '2022-04-03 08:52:58'
WHERE u.email = 'someemail@aaa.com'
您可以将此查询更改为SELECT
查询,以检查要更新的行:
SELECT * FROM user_product_status ups
INNER JOIN user_accounts ua ON ups.user_account_id = ua.id
INNER JOIN users u ON ua.user_id = u.id
WHERE u.email = 'someemail@aaa.com'
答案 2 :(得分:0)
UPDATE user_product_status
SET access_starts_at = '2022-04-03 08:52:58'
from user_product_status ups
JOIN user_accounts ac ON ac.user_id = ups.user_account_id
JOIN users u ON u.id = ac.user_id
WHERE u.email = 'someemail@aaa.com'