簡體   English   中英

WHERE子句中的多個列

[英]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 ?
      )
    )

這解決像

  1. 標題包含? 和報價包含?

    是:返回行否:GoTo2。 內部()

    1. 這兩個字段中的任何一個包含值嗎?

是:返回行否:不返回行

希望這可以清除它。

最好的祝福,

格奧爾格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM