【发布时间】:2017-11-13 04:31:46
【问题描述】:
我想将两张表合二为一。 第一个是:
ID code_1 code_2
==============================
1 XXX YYY
2 ZZZ YYY
3 YYY ZZZ
第二个是:
CODE Name
==============
XXX Name_1
YYY Name_2
ZZZ Name_3
有一个 FK code_1= CODE 和 code_2 = CODE 我想用 Name_1 和 Name_2(按 code_1 或按 code_2)创建一个表 但不仅仅是一个简单的查询,其中的名称不是 XXX 或 YYY,而是来自 FK 的名称。像这样:
ID code_1 code_2
=======================
1 Name_1 Name_2
3 Name_2 Name_1
我试过了,但我不知道如何用 Name_1 替换 XXX:
SELECT Table1.ID, Table1.code_1, Table1.code2 FROM MyDB.Table1
WHERE (code_1=XXX and code_2 =YYY) or (code_2=XXX and code_1 =YYY)
非常感谢!
【问题讨论】:
-
为什么答案只有两行?你不只是用他们的名字替换代码。你在干嘛?请详细说明答案中何时出现一行。 (你必须告诉我们你在总结/标记为“组合”。)理想情况下,完成这个句子模板:row (id,code_1,code_2) is in the answer when (f.id,f.code_1,f.code_2)在第一和 (s1.code,s1.name) & (s2.code,s2.name) 在第二和 id = f.id 和 code_1 = s1.name 和 code_2 = s2.name 和 s1.name = f.code_1 和 s2.name = f.code_2 和 ..."
-
PS 重新阅读 SQL JOIN。给定别名 a 和 b 的两个表的连接是连接来自 a 的行和来自 b 的行的行。 (句子模板 AND 导致 SQL 查询 JOIN、ON、WHERE 或 AND。)
-
PS 请阅读minimal reproducible example 并采取行动。不提供任何信息,即与回答您的问题相关的信息,会使您的问题偏离主题。
-
您的编辑不清楚。 “简单查询”是另一个标签,不是明确的描述。 “不仅仅是一个简单的查询”是另一个标签。使用足够的单词和句子来清楚地解释。 (一个就足够了:我之前要求的句子模板又名 谓词。)(您的解释必须仅说明示例输出中的 ids 1 和 3。)
-
也许你想说你想要看起来像一行 First 的唯一行,它在 {YYY,XXX} 中都有 code_1 和 code_2 但每个代码都被其名称替换? PS 如果一个表 (key,...,x_1,x_2) 可以替换为 (key,...,,n,x) 或 (key,...,x) 那么它通常应该是。否则查询和更新是不必要的复杂。例如,您真正需要的第一个表可能是 (id,n,code),而您真正需要的结果是 (id,name)。
标签: mysql sql join foreign-keys