2014-02-28 56 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

我已经尝试这样做,我得到的结果在查询窗口与给定的顺序..