我有表:
id name type
其中“类型”是 1 或 2
我需要将这张 table 与另外两张 table 合并。 “type = 1”的行应该与第一个表连接,=2 与第二个表连接。
例如,主表包含人们所做的一些事件。加入的第一表是关于男性的信息,其次是关于女性的信息。类型是性别。
我需要记录最近 10 个事件以及有关这些人的所有信息。
有点像
SELECT *
FROM tbl
INNER JOIN tbl_1 ON tbl.name = tbl_1.name HAVING tbl.type = 1
INNER JOIN tbl_2 ON tbl.name = tbl_2.name HAVING tbl.type = 2
但它不起作用。
如何实现?
最佳答案
首先,HAVING
子句用于分组,而不是连接。只需在 ON 子句中包含条件
ON tbl.name = tbl_1.name AND tbl.type = 1
其次,如果条件不满足,该行将不会出现在内部连接的结果中。由于一个字段 (tbl.type
) 不能有两个不同的值,因此不会产生任何行。请尝试使用左外部联接。
SELECT *
FROM tbl
LEFT JOIN tbl_1 ON tbl.name = tbl_1.name AND tbl.type = 1
LEFT JOIN tbl_2 ON tbl.name = tbl_2.name AND tbl.type = 2
但是,这带来了一个问题:为什么不能允许结果中的所有字段,而忽略那些您不关心的字段?
关于mysql - 使用 HAVING 连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511667/