我正在使用php和SQL进行搜索。我要实现的目标是获取两个表或两个表中的任何一个的数据。
这是我的SQL。
SELECT * FROM history_search
INNER JOIN history_subs ON history_search.keyword = history_subs.keyword
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE '%$keyword%`'
history_subs
id, keyword, illegal, whitelist (1, Spotify.com, (Artists, api, community, investors, support, labs), open)
history_search
id, keyword, result, blacklist (1, meristone.com, 20, 0), (2, spotify.com, 19, 2),(3, cjrtec.com, 10, 1)
我的问题是,如果两个表中都不存在关键字,它将不会显示数据。
希望你能帮助我。
答案 0 :(得分:0)
如果您的标准是显示任何表中是否存在结果,则需要使用完全外部联接。
此外,如果在完全外部联接上使用where条件,则查询将隐式转换为内部联接
最后的查询
编辑:显然,MySql不支持完全外部联接。这是完全外部联接的替代方法
SELECT
*
FROM history_search
LEFT JOIN history_subs
ON history_search.keyword = history_subs.keyword AND history_search.keyword LIKE '%$keyword%'
UNION
SELECT
*
FROM history_subs
LEFT JOIN history_search
ON history_search.keyword = history_subs.keyword AND history_subs.keyword LIKE '%$keyword%`'
答案 1 :(得分:0)
对于您而言,最好使用 union
SELECT * FROM history_search
right JOIN history_subs ON history_search.keyword = history_subs.keyword
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE
'%$keyword%'
union
SELECT * FROM history_search
left JOIN history_subs ON history_search.keyword = history_subs.keyword
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE '%$keyword%'