2014-02-28 106 views
0

我試圖讓一個MYSQL查詢只顯示匹配2個WHERE語句的行。MYSQL顯示結果如果列在&如果另一個柱是

例如

$result=mysql_query(" 
    SELECT * 
    FROM tablename 
    WHERE 
    (column1 IN $phpimplodestring1) OR 
    (column2 LIKE $phpimplodestring2) 
    GROUP BY column2 
    ORDER BY id /* another column */ 
    DESC LIMIT 5 
") 

我已經搜索的所有東西都沒有工作到目前爲止,經過幾周的測試,沒有結果。 我試過使用mysqli,但它在使用它時似乎沒有工作。

在此先感謝您的幫助! :)

+5

這有什麼錯' AND'? –

+1

我想你必須使用AND。注意使用帶有* select字段列表的GROUP BY column2(不好) –

+0

@AlmaDo,出於某種原因,當我第一次在某些舊版本上嘗試過時,它忽略了其中一個,重寫了它並使用AND並且它工作正常! :) 謝謝你的幫助! –

回答

0

您的問題不是WHERE子句。 注意你的聚合,你是按column2分組,但在select中聲明*。 select子句必須與聚合子句匹配,並且甚至沒有聲明聚合函數。

下面的例子可以工作(取決於你想要什麼)

SELECT column2, count(*) as QTD 
    FROM tablename 
    WHERE 
    (column1 IN $phpimplodestring1) OR 
    (column2 LIKE $phpimplodestring2) 
    GROUP BY column2 
    ORDER BY id /* another column */ 
    DESC LIMIT 5 


SELECT * 
    FROM tablename 
    WHERE 
    (column1 IN $phpimplodestring1) OR 
    (column2 LIKE $phpimplodestring2) 
    ORDER BY id /* another column */ 
    DESC LIMIT 5 


SELECT column2, sum(anotherColumn) 
    FROM tablename 
    WHERE 
    (column1 IN $phpimplodestring1) OR 
    (column2 LIKE $phpimplodestring2) 
    GROUP BY column2 
    ORDER BY id /* another column */ 
    DESC LIMIT 5 


SELECT distinct * 
    FROM tablename 
    WHERE 
    (column1 IN $phpimplodestring1) OR 
    (column2 LIKE $phpimplodestring2) 
    ORDER BY id /* another column */ 
    DESC LIMIT 5 

等等

+0

感謝讓,我設法得到我需要的工作,通過使用AND而不是OR ...不知道爲什麼它不工作...但重寫代碼似乎經常工作奇蹟! :) 我會嘗試一些你的選擇,看起來像他們蟎加快了一點。再次感謝 –

+0

不錯,在這種情況下發布您的工作代碼並將其標記爲答案 – jean

+0

沒有足夠的代表來回答它,但這裏是: 解決了它,所以現在它只顯示列中有column1的行, column2就像列表中的一個項目。 (這是一個PHP破滅做多發LIKE'OR) 「$結果= mysql_query(」 SELECT * FROM表名 WHERE (COLUMN1 IN $ phpimplodestring1)和 (COLUMN2 LIKE $ phpimplodestring2) GROUP BY列2 ORDER BY id/*另一列*/ DESC LIMIT 5 「) ' –

0

$ SQL =「SELECT * FROM admin_user WHERE user_name IN( 'arpit','尼拉吉')OR admin_name LIKE'arpit'GROUP BY admin_name ORDER BY ID DESC LIMIT 5「;

在這裏,我把
的tablename = admin_user
列1 = admin_user &
列2 = admin_user

我已經嘗試這樣做,我得到的結果在查詢窗口與給定的順序..