php - 如何在 PHP 中以随机顺序从现有 mysql 数据库创建两个新列表,其中相同位置的元素不相等?

标签 php mysql database random

好的。让我们更清楚一点。

我想做的是:

我有一张这样的 table ...

    +---------+--------------------+--------------------------+
    |    id   |    name            | email                    |
    +---------+--------------------+--------------------------+
    | 1       |  karl              | karl@email.com           |
    +---------+--------------------+--------------------------+
    | 2       |  fred              | fred@email.com           |
    +---------+--------------------+--------------------------+
    | 3       |  christopher       | chris@email.com          |
    +---------+--------------------+--------------------------+
 

我最终想要的是一个如下所示的新表:

    +-----+---------------+---------------------+--------------+--------------------+
    | id  | name1         | email1              | name2        | email2             |
    +-----+---------------+---------------------+--------------+--------------------+
    | 1   | fred          | fred@email.com      | christopher  | chris@email.com    |
    +-----+---------------+---------------------+--------------+--------------------+
    | 2   | christopher   | chris@email.com     | karl         | karl@email.com     |
    +-----+---------------+---------------------+--------------+--------------------+
    | 3   | karl          | karl@email.com      | fred         | fred@email.com     |
    +-----+---------------+---------------------+--------------+--------------------+
 

值在水平方向 (id[1].name1 != id[1].name2) 和垂直方向 (id[1].name1 != id[2].name1) 是唯一的。

因此,这个输出应该是不可能的:

    +-----+---------------+---------------------+--------------+--------------------+
    | id  | name1         | email1              | name2        | email2             |
    +-----+---------------+---------------------+--------------+--------------------+
    | 1   | fred          | fred@email.com      | christopher  | chris@email.com    |
    +-----+---------------+---------------------+--------------+--------------------+
    | 2   | fred          | fred@email.com      | karl         | karl@email.com     |
    +-----+---------------+---------------------+--------------+--------------------+
    | 3   | karl          | karl@email.com      | karl         | karl@email.com     |
    +-----+---------------+---------------------+--------------+--------------------+
 

我怎样才能以简单的方式实现这一点?

最佳答案

我认为这个查询应该可以完成工作:

SELECT id1.name AS name1, id1.email AS email1, id2.name AS name2, id2.email AS email2
FROM table AS id1
JOIN table AS id2 ON ( name1 != name2 ) 
WHERE name1 < name2

table 是您的表的名称。希望对您有所帮助。

关于php - 如何在 PHP 中以随机顺序从现有 mysql 数据库创建两个新列表,其中相同位置的元素不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13286782/

相关文章:

php - 验证 reCaptcha V2 : Always false

php - 如何将 php 源代码的行号合并到自定义错误消息中?

php - 在 github 上存储 Symfony 项目的最佳方式是什么?

php - PHP 有没有办法检测请求是否来自浏览器后退按钮?

php - MySQL:在组内枚举(Banana、1/Banana、2/Banana、3/Apple、1 ...)

java - SQLite 数据库更新

PHP - 更改 URL 以隐藏查询字符串并显示页面标题

mysql - 如果它们在 sql 中共享相同的 id 值,如何将值组合在一起

mysql - 计算各种 SQL 数据库(MySQL、Oracle、H2)中两个日期之间的秒数差异

database - 如何删除 key ?