我正在尝试编写查询在表上搜索,但我得到了通用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)
您的接口只允许传入一个查询。我建议您学习如何使用正确的参数。 –
哦,很好,我打算在'%s'的位置放一个'?'。刚刚更新了我的代码以及问题。仍然得到相同的错误。 – Lansana
还将'@ query'改为'@ searchString',因为这可能会让事情混淆,我没有试图将查询放入查询中。 – Lansana