我是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/

10-16 15:40