【发布时间】:2009-03-17 03:34:16
【问题描述】:
我在使用 MySQL 连接时遇到问题。
Table_A:
A_id Cost1 A1_id Cost2
1 500 0 200
1 100 1 100
1 50 2 60
1 10 3 50
2 5 0 10
Table_B(参考B_id:来自Table_AA1_id):
B_id FName LName
1 X A
2 Y B
3 Z C
Table_C(参考C_id:来自Table_AA_id):
C_id Towns
1 Atlanta
2 NewYork
我需要合并所有三个表,如下输出:
- 我提取与
(Table_A.A_id=Table_C.C_id)匹配的Towns。 - 我提取与
(table_A.A1_id=Table_b.b_id)匹配的Fname,Lname。 - 如果
A1_id != 0,我需要跳过Towns。 - 如果
A1_id == 0,我需要跳过Fname,Lname。
剩余的数据可能是一个值或空值,我将其指定为“#”。 对于给定的场景,什么是高效的 MySQL 查询?
输出:
A_id Cost1 A1_id cost2 Fname Lname Towns
1 500 0 200 # # Atlanta
1 100 1 100 X A #
1 50 2 60 Y B #
1 10 3 50 Z C #
【问题讨论】:
-
您的输出令人困惑。如果你想“跳过 A1_id == 0”,那么第一行不应该是查询输出的一部分。
-
我必须支持 @enobrev 的评论 - 如果示例输出包含 A1_id == 0 的行,“如果 A1_id == 0 则跳过”是什么意思。
-
还有,既然A_id = 1在每一行输出中,为什么亚特兰大没有出现在每一行输出中?
-
现在我解释了所有我会得到回应吗?
-
也许...花了一些时间发现发生了什么变化。