在“SELECT DISTINCT”中使用“AND”语句

时间:2011-09-09 01:35:57

标签: mysql

我正在尝试创建一个搜索引擎,我想要的是选择两列不同的行。

$sorgu = mysql_query("SELECT DISTINCT name AND surname FROM users");

    while($cek = mysql_fetch_array($sorgu))
    {
        $display = $cek['name']." ".$cek['surname'];

        if(strcmp($written,$display) == 0)
        {
            echo $display;
        }       
    }

我得到了两个名称和姓氏的未定义索引错误。当我在这里删除“AND”语句时,代码工作正常。我如何在这里使用“AND”,意味着同时比较两列? 感谢

3 个答案:

答案 0 :(得分:2)

如果您要提取DISTINCT姓名和姓氏,则应该

SELECT DISTINCT Name, Surname 
FROM Users 

GROUP BY Name, Surname

这将为您提供如下结果:

  Name | Surname
------------------
  John | Smith
  John | Doe
  Doug | Smith

它会阻止以下结果:

  Name | Surname
------------------
  John | Smith
  John | Doe
  John | Smith

答案 1 :(得分:0)

对多于1个字段使用GROUP BY而不是DISTINCT;将其更改为DISTINCT id;

更改

$sorgu = mysql_query("SELECT DISTINCT name AND surname FROM users");

$sorgu = mysql_query("SELECT name, surname FROM users GROUP BY name, surname");

答案 2 :(得分:0)

在大多数数据库中,DISTINCT(或UNIQUE)相当于GROUP BY ... ORDER BY,而GROUP BY本身就是无序DISTINCT

这:

  • SELECT DISTINCT name, surname 
    FROM users
    

应该相当于:

  • SELECT    name, surname 
    FROM      users
    GROUP BY  name, surname
    ORDER BY  name, surname
    

类似于:

  • SELECT    name, surname 
    FROM      users
    GROUP BY  name, surname
    

所有这些都应该为您提供一组独特的记录,但最后一个应该产生最快的结果。

此外,无需在代码中连接,您也可以在数据库中执行此操作:

  • SELECT DISTINCT concat(name,' ',surname)
    FROM users