我有一张叫做 的桌子USERS
和一张叫做 的桌子ADDRESSES
,还有一张ADDRESS_TYPE
桌子。每个用户可以有多个地址。
SELECT *
FROM USER
INNER JOIN address ON address.userId = user.userId
INNER JOIN address_type ON address_type.id = address.addressType
WHERE addressType = 4
OR primaryAddress = 1
如果地址类型为 4,我想将地址表加入用户表,但如果他们的地址类型不是 4,则它应该拉入标记为主要的地址。基本上问题是我需要对查询进行分组,以便每个用户只获得 1 行,同时具有逻辑 =“如果 addressType = 4,加入这个地址,否则如果 primaryAddress = 1,加入这个另一个地址”。
希望这是有道理的,非常感谢您的帮助。
编辑:这些是我正在处理的表格:
用户表
+--------+-----------------+-----------------+
| 用户名 | 名字 | 姓氏 |
+--------+-----------------+-----------------+
| 10001 | 黛比 | 巴松 |
| 10002 | 巴马瓦马 | 九冬 |
| 10003 | 杰西卡M | 史蒂夫 |
| 10004 | 金农 | 白色 |
+--------+-----------------+------------------+
地址类型
+----+------+-------------+------------+-------- ----+
| 编号 | 代码 | 描述 | 可修改 | 数据状态 |
+----+------+-------------+------------+--------- --+
| 1 | 主页 | 主页 | 1 | 1 |
| 2 | 布斯 | 商业 | 1 | 1 |
| 3 | SCH | 学校 | 1 | 1 |
| 4 | 唐 | 捐赠者地址 | 1 | 1 |
+----+------+-------------+------------+--------- --+
地址表
+----------------+--------+---------- ----+--------------+-------------+
| 主地址 | 用户名 | 街道1 | 城市| 地址类型 |
+----------------+--------+----------- --+-------------+--------------+
| 0 | 10001 | 12660 皮卡特广场 | 圣地亚哥 | 1 |
| 0 | 10001 | 威尔希尔大街 446 号 | 富乐顿 | 2 |
| 0 | 10001 | 4224 E. 114 路 | 桑顿 | 3 |
| 1 | 10001 | 科罗拉多大道 828 号 | 洛杉矶 | 4 |
| 0 | 10002 | 40A 林登大道,#2 | 萨默维尔 | 1 |
| 0 | 10002 | 446 37 街,#2 | 奥克兰 | 空 |
| 1 | 10002 | 邮政信箱 06562 | 芝加哥 | 空 |
| 0 | 10002 | 1281 W. 2nd St. | 圣佩德罗 | 空 |
| 1 | 10003 | 10557 S.奥克利大道。芝加哥 | 空 |
| 0 | 10003 | 1425 哈里森街,#324 | 奥克兰 | 空 |
+----------------+--------+----------- --+-------------+--------------+