MySQL 查询 - 根据前提条件连接不同的表(从不同表检索的值)

标签 mysql sql join

我有下表:

1. club_members (id, type, name)
2. male_members (name, age, location)
3. female_members (name, age, location)
4. senior_members (name, age, location)

我需要根据从第一个表中检索到的类型选择这 3 个表中的一个。 对于 type=male,我将从 male_members 等中进行选择。

所以我想写一个类似于

的查询
select type, name , age , location from club_members , (2/3/4 table) where id=X ...

如何编写这样的查询。

可能正在使用 if/elsecase 语句

最佳答案

假设 Name 作为表之间的链接。

select 
       C.type as Type,
       COALESCE(m.name, f.name, s.name) AS MemberName, 
       COALESCE(m.age, f.age, s.age) AS MemberAge, 
       COALESCE(m.location, f.location, s.location) AS Location
from club_members C
left join male_members M on C.name=M.name and C.type='Male'
left join female_members F on C.name=F.name and C.type='Female'
left join senior_members S on C.name=S.name and C.type='Senior'
where C.id='Your value'

关于MySQL 查询 - 根据前提条件连接不同的表(从不同表检索的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17565376/

相关文章:

php "count()"函数和数据库

php - mysql_fetch_array 中的错误。无法通过 while 循环获取记录

c# - 如何将sql inner join query转成linq to sql query并转成list

sql - 将单列值标签连接到 SQL 中另一个表中的多列值

mysql - M :N table with time interval 的数据库设计

SQL 选择查询中的 PHP 对象

sql - 如何在本地计算机上不安装 SQL 的情况下解决 "MSOLAP.4 Provider is not registered on the local machine"错误?

MySQL 左连接 COUNT() 和 SUM() 与来自同一个表的 CASE

sql - 解决两个表之间的排序规则问题

sql - 使用 SQLite 在 SQL 树结构中获取所有子项和所有父项