mysql 如何将 2 列值连接到 2 列值
mysql How To join 2 column value into 2 column value
我有两个 table 列如下:
- khs (id, year, program, codemk)
- 科目(id、年份、程序、codemk、namemk、tm、pr、lp)
我想要一个包含以下内容的结果:
codemk, namemk, tm, pr, lp
注意: 字段 year
、program
和 codemk
在 khs
table 中每个都不是唯一的也在 subjects
table。但是将这些字段的 3 个值结合起来形成一个唯一值。
我试过这个:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON khs.year + khs.program +khs.codemk = subjects.year + subjects.program + subjects.codemk;
但是 tm
、pr
和 lp
的结果不是我所期望的。我错过了什么?抱歉,我是 MySQL 的新手,我该如何将其创建到新的 table 视图。
提前致谢。
为什么要使用联接?为什么不尝试这样的事情:
SELECT codemk,namemk,tm,pr,lp
FROM khs,subjects
WHERE khs.year = subjects.year
也许是这样:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON khs.year=subjects.year, khs.program =subjects.program, khs.codemk = subjects.codemk;
但不确定是不是你问的,否则:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON CONCAT(khs.year,khs.program, khs.codemk) = CONCAT(subjects.year, subjects.program, subjects.codemk);
我不确定你的预期结果是什么(能否提供一下?以及数据表的样本)但你现在可以试试:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
INNER JOIN subjects
ON khs.year = subjects.year
AND khs.program = subjects.program
AND khs.codemk = subjects.codemk;
我有两个 table 列如下:
- khs (id, year, program, codemk)
- 科目(id、年份、程序、codemk、namemk、tm、pr、lp)
我想要一个包含以下内容的结果:
codemk, namemk, tm, pr, lp
注意: 字段 year
、program
和 codemk
在 khs
table 中每个都不是唯一的也在 subjects
table。但是将这些字段的 3 个值结合起来形成一个唯一值。
我试过这个:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON khs.year + khs.program +khs.codemk = subjects.year + subjects.program + subjects.codemk;
但是 tm
、pr
和 lp
的结果不是我所期望的。我错过了什么?抱歉,我是 MySQL 的新手,我该如何将其创建到新的 table 视图。
提前致谢。
为什么要使用联接?为什么不尝试这样的事情:
SELECT codemk,namemk,tm,pr,lp
FROM khs,subjects
WHERE khs.year = subjects.year
也许是这样:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON khs.year=subjects.year, khs.program =subjects.program, khs.codemk = subjects.codemk;
但不确定是不是你问的,否则:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
RIGHT JOIN subjects
ON CONCAT(khs.year,khs.program, khs.codemk) = CONCAT(subjects.year, subjects.program, subjects.codemk);
我不确定你的预期结果是什么(能否提供一下?以及数据表的样本)但你现在可以试试:
SELECT khs.id khs.codemk, subjects.namemk, subjects.tm, subject.pr, subjects.lp
FROM khs
INNER JOIN subjects
ON khs.year = subjects.year
AND khs.program = subjects.program
AND khs.codemk = subjects.codemk;