Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除与其他行具有重复用户名的一行?_Php_Sql_Delete Row_Corresponding Records - Fatal编程技术网

Php 如何删除与其他行具有重复用户名的一行?

Php 如何删除与其他行具有重复用户名的一行?,php,sql,delete-row,corresponding-records,Php,Sql,Delete Row,Corresponding Records,这是表格: username: id: john 1 john 2 john 56 john 75 john 98 现在我希望查询并随机删除其中一行,保留其他四行——假设我不知道ID的值,因为它是自动递增的 这是代码,我不确定要添加什么,所以它只删除与“john”关联的一行 $query = ("DELETE FROM table WHERE username='$name' &&

这是表格:

username:     id:

john          1
john          2
john          56
john          75
john          98
现在我希望查询并随机删除其中一行,保留其他四行——假设我不知道ID的值,因为它是自动递增的

这是代码,我不确定要添加什么,所以它只删除与“john”关联的一行

$query = ("DELETE FROM table WHERE username='$name' && id=''");
我如何修改它,使其删除一行名为john,而不是全部

固定代码

这是一个简单有效的解决方案

$query = ("DELETE FROM table WHERE username='$name' LIMIT 1");

我不确定这是否可能,但可能将结果限制为1

$query = ("DELETE FROM table WHERE username='$name' LIMIT 1");

我相信这会奏效:

$name = 'john';

$query = ("DELETE FROM table WHERE id = (SELECT id FROM table WHERE username = '$name' ORDER BY RAND() LIMIT 1)");

听起来你应该让用户名成为一个唯一的索引。谢谢,这正是我想要的@user2142549如果一个答案有效,并且你认为它是好的,那么你应该点击选票下面的复选框。这接受了答案,并给了回答者声誉。它也给你2的声誉。