Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 针对具有相同字段的多个表的mysql查询进行匹配_Php_Mysql - Fatal编程技术网

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)