0

我正在尝试使用运行良好的 JOIN 从 3 个表中选择记录,但我现在需要向 SELECT 添加一些我无法弄清楚的附加条件。我当前的选择是这样的:

SELECT user.*, address.*, state.* FROM user 
LEFT JOIN address ON user.id = address.user_id 
LEFT JOIN state ON user.id = state.user_id

现在,地址和状态可能有多个记录,但两个表都有一个位字段来指示它们是主记录,这是我要选择的记录。我尝试WHERE address.state = b'1'在语句中添加一个,但它只返回那些具有主记录的记录,我最理想的做法是从按主字段排序的地址/状态表中选择顶部记录,以便在以下情况下选择主记录它存在,但如果没有主记录,将选择下一条记录。

如何使用 MySQL 5 实现这一点?

4

1 回答 1

3

将条件添加到您的LEFT JOIN

LEFT JOIN address ON ( user.id = address.user_id AND address.state = b'1' )

左连接将只返回符合此条件的行,但您仍然会得到users没有主地址。

于 2012-07-13T11:40:08.090 回答