我是SQL的新手,使用简单查询存在以下问题。
我必须执行一个查询联接2表。连接操作不是在单个字段上,而是必须在这些表上具有相同名称的2个不同字段上执行。
所以我做了这样的事情:
SELECT count(*)
FROM TID003_ANAGEDIFICIO anagraficaEdificio
INNER JOIN TID002_CANDIDATURA candidatura ON(candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR, candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
WHERE anagraficaEdificio.FLG_GRA=1;
但是,执行此查询时,我会显示以下错误消息:
操作数应包含1列
如您所见,我正在尝试联接这2个表,联接基于2个字段,方法是:
ON(candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR, candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
怎么了?我想念什么?如何解决此问题?
最佳答案
如果要一起使用多个条件,请使用AND
指定其他联接条件:
SELECT count(*)
FROM TID003_ANAGEDIFICIO anagraficaEdificio
JOIN TID002_CANDIDATURA candidatura
ON candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR
AND candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN
WHERE anagraficaEdificio.FLG_GRA = 1;
如果两个表中联接列的列名相同,则可以使用带
USING
谓词的联接:JOIN TID002_CANDIDATURA candidatura USING (PRG_PAR, PRG_CAN)
并非所有数据库都支持此功能,但MySQL支持(有关更多信息,请参见documentation)。
关于mysql - 如何正确地执行查询,以便使用这些表中的2个不同字段来联接2个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35840934/