[英]Multiple columns in a WHERE clause
我正在嘗試在您輸入參數的網址查詢字符串中進行查詢,它使用一次在LIKE中輸入的變量在我的MySQL數據庫(存儲的來自irc通道的報價)中搜索MySQL數據庫,但無法使它搜索更多內容而不是我正在使用的查詢的一列。 我要搜索的表中的兩個字段是“ title”和“ quote”。 有更好的方法嗎? 現在,我只是要轉到頁面以確認輸出以用於測試目的。 下面的代碼可以正常工作,就像僅搜索“標題”或“引用”字段一樣。
app.get("/api", function(req, res){
var search = "%" + req.query.search + "%";
var queryString = "SELECT * FROM quotes WHERE title LIKE ? ORDER BY RAND() LIMIT 1";
var queryString = mysql.format(queryString, search);
mysqlPool.getConnection(function(err, connection) {
if(err) throw err;
connection.query(queryString, function(err, rows, fields){
if (!err){
res.send('<xmp>' + JSON.stringify(rows[0], null, 2) + '</xmp>');
connection.release();
} else {
console.log('Error while performing Query.');
connnection.release();
}
});
});
});
我嘗試在下面執行此操作,但顯然無法正常工作:
var queryString = "SELECT * FROM quotes WHERE (title OR quote) LIKE ? ORDER BY RAND() LIMIT 1";
在此處搜索僅帶有“ title”的輸出示例只是為了了解一個主意:
{
"id": 3947,
"nick": "o_O",
"host": "o_O``!~o_O@*.ma.cable.rcn.com",
"title": "gix.flesh.eating.bacteria",
"quote": "<gix> omg my face is like 10lbs lighter",
"channel": "#motorcycles",
"timestamp": 1205791192
}
您不能LIKE
這樣使用LIKE
,請嘗試此;)
var queryString = "SELECT * FROM quotes WHERE title LIKE ? OR quote LIKE ? ORDER BY RAND() LIMIT 1";
WHERE條款中的每個條件都必須為True。 您正在檢查標題 或 引用 。 如果在OR中滿足條件A,則退出並且不檢查第二個條件。 您可以像這樣檢查它:
WHERE
(
title like ?
and
quote like?
OR
(
(title or quote) like ?
)
)
這解決像
標題包含? 和報價包含?
是:返回行否:GoTo2。 內部()
是:返回行否:不返回行
希望這可以清除它。
最好的祝福,
格奧爾格
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.