Php 针对具有相同字段的多个表的mysql查询进行匹配
当前查询:Php 针对具有相同字段的多个表的mysql查询进行匹配,php,mysql,Php,Mysql,当前查询: select * from `table1` where MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) AND `price` BETWEEN 0 AND 1000 order by MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) desc, `price` DESC LIMIT 0, 30 如何在具有相同字段的多个表上运行上述查询?如表2、表3、表4
select * from `table1` where MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) AND `price` BETWEEN 0 AND 1000 order by MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) desc, `price` DESC LIMIT 0, 30
如何在具有相同字段的多个表上运行上述查询?如表2、表3、表4
如果我将所有表中的所有数据合并到一个表中而不是多个表中,查询会更快吗?或者根本没有区别吗?对第一个问题的回答:您可以在MySQL中使用
连接
,正如您所说,它可以组合表
对第二个问题的回答:
单向:
第二种方式:
WHERE
语法更面向关系模型,其中internaljoin
是您应该使用的ANSI语法
当您需要开始向查询中添加更多表时,使用的第一个查询(其中
会变得更加混乱、难以阅读和维护)。想象一下,在四个或五个不同的表上执行相同的查询和连接类型。。。这是一场噩梦
但是,根据查询优化器的不同,它们对机器可能具有相同的含义
您应该始终编写可读的代码
也就是说,如果这是一个内置关系,则使用显式连接。如果要在弱相关数据上进行匹配,请在从联接获得的结果集上使用where
子句
希望这有助于不是我的否决票,但是
加入可能是错误的;“具有相同字段的多个表”所需的操作是UNION
。是的,下一票是我的,正是出于这个原因。答案很长,但完全没有抓住要点(混淆了连接和联合)。
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)