我正在尝试理解和修改输入字段使用的SQL查询以进行智能搜索。
原始代码在这里:
((`clients` INNER JOIN `addresstorecord` ON `clients`.`uuid` =
`addresstorecord`.`recordid` AND `addresstorecord`.
`tabledefid`='tbld:6d290174-8b73-e199-fe6c-bcf3d4b61083' AND
addresstorecord.primary='1') INNER JOIN
`addresses` ON `addresstorecord`.`addressid` = `addresses`.`uuid`)
我实际上并不需要内连接,因为我的所有信息都在一个表中。
在这种情况下,理论上我可以用我的表名替换内连接查询吗?或者我是否必须实际从声明中选择?
答案 0 :(得分:1)
查询可以使用连接来限制结果集中的行,而不仅仅是要显示其他列。例如:
INSERT INTO tableA (col1) VALUES (10), (20), (30);
INSERT INTO tableB (col1) VALUES (20);
SELECT tableA.col1 FROM tableA;
返回三行:10,20和30。
SELECT tableA.col1 FROM tableA JOIN tableB ON tableA.col1 = tableB.col1;
返回一行:20。
因此,在您的示例中,联接意味着查询仅返回clients
中具有匹配行的addresses
个。
答案 1 :(得分:0)
如果删除联接,则将输出clients表中的所有行。如果这是你想要的,你可以删除连接,但我不这么认为。连接实际上是过滤输出,只给出clients.uuid = addresstorecord.recordid
等客户端行。我认为您想要在输出中看到的所有数据都在客户端表中,但您需要过滤的数据不是这样,您需要连接。