1

table.a は innodb にフィールドがありますid,post_id,auther,add_date

table.b は myisam has fields post_id,title,content、fulltext key(title,content) です

select * from b 
where match (title,content) 
against ('+words' in boolean mode)

これは 12 のレコードを返す可能性があります。説明を実行すると、全文キーが表示されました。しかし

select * from a 
inner join b 
on a.post_id = 'b.post_id' 
where match (b.title,b.content)
against ('+words' in boolean mode)
and a.auther = 'someone'
order by a.id asc

この再実行 0 の結果。確認しました

select id,auther,post_id from a where auther = 'someone' 

post_idmysqlに入れられたリターン

select post_id from b where post_id = 'post_id from table a'

この結果は存在します。では、どこに問題があるのでしょうか。(ところで、2 つのテーブル post_id はすべて varchar として保存されます)

4

1 に答える 1

0

結合条件を意図していなかったと思われます

on a.post_id = 'b.post_id'

むしろ

on a.post_id = b.post_id

(違いは、あなたのバージョンはstringのすべての行にbすべての行を結合するのに対し、私のバージョンはそれぞれの列が等しい行の行に結合することです)。aa.post_id"b.post_id"abpost_id

于 2012-04-28T18:38:43.437 に答える