MySQL 连接两个表时的大小写
MySQL Case when joining two tables
我有一个关于 mySQL 的问题:
我有两张桌子。
Table 1
在 table 2
中,我有相同的 5 个 idprojet,但有不同的 datedebut 和不同的 datefin。
我需要找到一种方法来了解 table2
中每个项目的较小 "datedebut" 是否小于 table1
中的首发日期,以及最大的 "datefin" ] table2
中的每个项目都大于 table1
中的 datefin。
我写了这个请求
SELECT table1.idprojet,
case when table1.datedebut < table2.tab2min then 'False'
else 'True' end as dateDebutComparison,
case when table2.dateFin > table1.dateFin then 'True'
else 'False' end as dateFinComparison
FROM table1, table2
JOIN (select table2.idProjet, MIN(dateDEBUT) tab2min, MAX(dateFIN) tab2max FROM table2 GROUP BY idProjet) table2
ON table2.idProjet = table1.idProjet
但它给了我以下错误:
Error Code: 1052. Column 'table2.idProjet' in on clause is ambiguous
输出类似于
table2
不需要出现在您的主查询中。
下面的查询应该是正确的。我更改了子查询别名以避免与 table2
table 名称混淆。
SELECT
table1.idprojet,
CASE WHEN table1.datedebut < minMaxTable2.tab2min THEN 'False' ELSE 'True' END AS dateDebutComparison,
CASE WHEN minMaxTable2.tab2max > table1.dateFin THEN 'True' ELSE 'False' END AS dateFinComparison
FROM table1
JOIN (SELECT table2.idProjet, MIN(table2.dateDEBUT) tab2min, MAX(table2.dateFIN) tab2max
FROM table2
GROUP BY table2.idProjet
) minMaxTable2
ON minMaxTable2.idProjet = table1.idProjet
我有一个关于 mySQL 的问题:
我有两张桌子。
Table 1
在 table 2
中,我有相同的 5 个 idprojet,但有不同的 datedebut 和不同的 datefin。
我需要找到一种方法来了解 table2
中每个项目的较小 "datedebut" 是否小于 table1
中的首发日期,以及最大的 "datefin" ] table2
中的每个项目都大于 table1
中的 datefin。
我写了这个请求
SELECT table1.idprojet,
case when table1.datedebut < table2.tab2min then 'False'
else 'True' end as dateDebutComparison,
case when table2.dateFin > table1.dateFin then 'True'
else 'False' end as dateFinComparison
FROM table1, table2
JOIN (select table2.idProjet, MIN(dateDEBUT) tab2min, MAX(dateFIN) tab2max FROM table2 GROUP BY idProjet) table2
ON table2.idProjet = table1.idProjet
但它给了我以下错误:
Error Code: 1052. Column 'table2.idProjet' in on clause is ambiguous
输出类似于
table2
不需要出现在您的主查询中。
下面的查询应该是正确的。我更改了子查询别名以避免与 table2
table 名称混淆。
SELECT
table1.idprojet,
CASE WHEN table1.datedebut < minMaxTable2.tab2min THEN 'False' ELSE 'True' END AS dateDebutComparison,
CASE WHEN minMaxTable2.tab2max > table1.dateFin THEN 'True' ELSE 'False' END AS dateFinComparison
FROM table1
JOIN (SELECT table2.idProjet, MIN(table2.dateDEBUT) tab2min, MAX(table2.dateFIN) tab2max
FROM table2
GROUP BY table2.idProjet
) minMaxTable2
ON minMaxTable2.idProjet = table1.idProjet