在第二个表上选择条件

时间:2012-07-13 11:37:28

标签: mysql sql

我正在尝试使用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',但它只返回那些具有主记录的记录,我理想的做法是从地址/状态表中选择按主要字段排序的顶级记录,这样如果存在,则选择primary,但如果没有primary,则选择下一条记录。

如何使用MySQL 5实现这一目标?

1 个答案:

答案 0 :(得分:3)

将条件添加到LEFT JOIN

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

左连接只会返回符合此条件的行,但如果没有主要地址,您仍会获得users