テーブルの検索クエリを作成しようとしていますが、一般的な1064 MySQL構文エラーが発生しています。私は質問に間違ったものは見当たりません...実際、うまく動作するような別のクエリがあります。MySQLエラー1064:検索クエリが期待どおりに動作しない
クエリはGoでSQLドライバを使用していますが、?
はすべてクエリが実行される前に値に変換されます。
これは私の誤りである:例えば
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT tax.* FROM tax JOIN user_tax ON user_tax.tax_id = tax.id WHERE u' at line 3
、これは作業クエリです:
SELECT tax.*
FROM tax
JOIN user_tax
ON user_tax.tax_id = tax.id
WHERE user_tax.user_id = ?
AND tax.deleted_at IS NULL
AND user_tax.deleted_at IS NULL
上記のクエリは、特定のユーザーのすべての納税記録を検索します。
今私は正確な検索をしようとしていますが、今は検索クエリです。検索文字列を取り込み、税テーブルのname
とrate
の列で検索文字列を探します。これは、それは次のとおりです。
SET @searchString = '%?%';
SELECT tax.*
FROM tax
JOIN user_tax
ON user_tax.tax_id = tax.id
WHERE user_tax.user_id = ?
AND tax.deleted_at IS NULL
AND user_tax.deleted_at IS NULL
AND tax.name LIKE @searchString
OR tax.rate LIKE @searchString
これは、コード内でクエリです:
var taxes []Tax
err := r.db.Select(&taxes, `
SET @query = '%?%';
SELECT tax.*
FROM tax
JOIN user_tax
ON user_tax.tax_id = tax.id
WHERE user_tax.user_id = ?
AND tax.deleted_at IS NULL
AND user_tax.deleted_at IS NULL
AND tax.name LIKE @query
OR tax.rate LIKE @query
`, q, userId)
あなたのインターフェイスでは1つのクエリのみが渡されます。使用しているインターフェイスに適切なパラメータを使用する方法を学ぶことをお勧めします。 –
ああ、私は '%s'の代わりに'? 'を付けるつもりでした。私のコードだけでなく質問も更新されました。まだ同じエラーが発生しています。 – Lansana
また、 '@ query'を' @ searchString'に変更したので、クエリをクエリに入れようとしていませんでした。 – Lansana