我真的在努力处理MySQL查询,我真的希望有人可以帮助我。我在MySQL数据库中有三个表 - 表A,B和C.我想找到表A第1列(a.1)中与表B第2列(b.2)中的值匹配的所有值。然后对于每个b.2匹配,找到表B中所有其他b.2值,这些值在b.3中找到的整数值的+/- 100范围内,其中a.1匹配b.2。最后,我需要获取这些b.2值并在表C第4列中找到匹配的b.2值。
以下是我尝试执行查询的方式:
SELECT *
FROM TableB AS b
INNER JOIN TableA AS a ON b.2 = a.1
AND b.3 >= (b.3 - 100)
AND b.3 <= (b.3 + 100)
INNER JOIN TableC as c
ON b.2 = c.4;
我试图说明我想用图片做什么,我希望这会有所帮助。
答案 0 :(得分:2)
根据您的描述我提炼了这个查询:
SELECT a.one, b.three, c.four
FROM a
JOIN b AS b0 ON b0.two = a.one -- intermediary step
JOIN b ON b.three BETWEEN b0.three - 100
AND b0.three + 100 -- real b values
JOIN c ON c.four = b.two
WHERE a.1 = b.2
应该是ON a.1 = b.2
ON bb.3 = c.4
,而根据您的说明,它必须为bb.2 = c.4
。
SELECT a.one, b.three, c.four
FROM a
JOIN b ON b.two = a.one
JOIN c ON c.four BETWEEN b.three - 100 AND b.three + 100
答案 1 :(得分:1)
在回答之前,我们需要知道发生了什么。它有用吗?它产生了什么?有错误吗?
无论如何,这是我的猜测(同样,我假设你不使用像1或2或3这样的列名,这只是为了演示目的):
SELECT *
FROM TableB AS b
INNER JOIN TableA AS a
ON a.1 = b.2
INNER JOIN TableB as bb
ON bb.3 between (b.3 - 100) AND (b.3 + 100)
INNER JOIN TableC as c
ON bb.3 = c.4
唯一的变化是表A的连接条件。您的语法错误应该是。我简化了条件。