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 に答える