如何在mysql中使用一个查询从两个不同的表中选择两条记录?
对于我正在使用的搜索查询
$search = $_GET['gd']
$arama_sonuc = mysql_query("select * from mp3 where baslik like '%$search%'");
好吧,没关系。它向我显示了 mp3 表的结果。但是对于相同的查询,我也需要在 HABERLER 表上搜索一些东西.. 我该怎么办?
使用 UNION 命令 http://dev.mysql.com/doc/refman/5.0/en/union.html
select * from mp3 where baslik like '%$search%'
UNION
select * from HABERLER where baslik like '%$search%'
(大概它们具有相同的列数和相同的类型等)
问题不清楚,您可能需要以下结构之一
SELECT *
FROM mp3
WHERE baslik like '%$search%'"
UNION
SELECT *
FROM HABERLER
WHERE baslik like '%$search%'"
或者
SELECT *
FROM mp3 M
JOIN HABERLER H on H.some_field = M.some_field_in_mp3_table
WHERE baslik like '%$search%'"
UNION 构造允许在单个结果集中收集来自不同表的记录;记录需要在结构上相同,即具有相同的列(不必命名相同但具有相同类型的数据)。结果集包括满足第一个查询的所有行和满足第二个查询的所有行(可能根据 ALL 关键字消除重复项)。
如果例如 mp3 和 HABERLER 表包含相同类型的记录(例如:有关音乐文件的信息),则 UNION 很有用。
JOIN 构造允许获取包含由第一个表中的列和第二个表中的列组成的记录的结果集。第二个表中的记录是根据它们满足 JOIN 的“ON 条件”来选择的。
如果两个表包含互补信息,则 JOIN 很有用(例如,mp3 包含有关 mp3 文件的信息,HABERLER 包含有关音乐家的信息;mp3 在其中一个列中引用了音乐家,而 HABERLER 有一个通过相同值标识音乐家的列)