我正在尝试创建一个搜索引擎,我想要的是选择两列不同的行。
$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”,意味着同时比较两列? 感谢
答案 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