这是我的情况。我有一个用户表和一个引用用户表的password_reset表。
我想运行一个查询,该查询将返回引用其用户行的password_reset行中的某些字段。但是,如果他们在password_reset中没有行,我想只返回用户的电子邮件。这是我到目前为止的工作,如果他们有一个password_reset行,但是如果他们没有,那就行不通(在这种情况下,它根本不返回任何行)。
SELECT u.email, p.code, p.expires
FROM users u, password_resets p
WHERE u.username = :username
AND u.id = p.user_id
我怎么写这个?我甚至可以只用一个查询来做到这一点吗?
答案 0 :(得分:4)
SELECT u.email, p.code, p.expires
FROM users AS u
LEFT JOIN password_resets AS p USING (u.id = p.user_id)
WHERE u.username = :username
答案 1 :(得分:1)
SELECT Users.email
FROM Users
LEFT JOIN Password_resets ON Users.PrimaryKey = Password_resets.ForeignKey
WHERE Password_resets.ForeignKey IS NULL
答案 2 :(得分:1)
SELECT u.email, p.code, p.expires
FROM users u
LEFT JOIN password_resets p
ON
u.id = p.user_id
WHERE u.username = :username