Mysql 使用“我的查询”从多个表中搜索关键字,
我想从三个表中搜索“法律”Mysql 使用“我的查询”从多个表中搜索关键字,,mysql,select,php,Mysql,Select,Php,我想从三个表中搜索“法律”tbl\u books,tbl\u books\u author和tbl\u books\u subject。我正在运行以下查询 SELECT * FROM tbl_books p, tbl_books_author d, tbl_books_subject m WHERE p.title = 'law' OR d.author = 'law' OR m.subject = 'law' LIMIT 0,30; 当我运行这个查询时,它在顶部显示“显示第0-29行(总共1
tbl\u books
,tbl\u books\u author
和tbl\u books\u subject
。我正在运行以下查询
SELECT *
FROM tbl_books p, tbl_books_author d, tbl_books_subject m
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;
当我运行这个查询时,它在顶部显示“显示第0-29行(总共1759260行,查询耗时5.1206秒)”。你能解释一下为什么会显示这个吗
原因是什么?如前所述,您正在进行笛卡尔积,即将第一个表中的所有记录与第二个表中的所有记录以及三维表中的所有记录进行匹配 您可能有一些与表相关的外键,因此您的查询应该如下所示:
SELECT *
FROM tbl_books p
INNER JOIN tbl_books_author d ON inner_join_condition1
INNER JOIN tbl_books_subject m ON inner_join_condition2
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;
填写表之间的内部连接条件实际上,您创建了一个包含3个表的表。。你希望它会回来什么?这三个表不是应该通过外键连接吗?你真的有一个名为“Law”的作者吗?我应该使用内部连接连接所有表,然后运行查询吗。所有表都将id作为主键。的可能重复项