Php 复杂MySQL查询-选择唯一记录、计数、插入和删除

Php 复杂MySQL查询-选择唯一记录、计数、插入和删除,php,mysql,Php,Mysql,我是新来的!这里新增,MySQL和PHP新增。我正试图做一件让我困惑的事。请帮帮我,伙计们 我有一个表,其中包含一些示例数据,如下所示: ID NAME ATTRIBUTE 1 John 123 2 Sean 654 3 John 987 4 Audrey 458 5 John 123 6 Audrey 589 7 Peter 257 8 Marc 125 9 Audrey 326 10 St

我是新来的!这里新增,MySQL和PHP新增。我正试图做一件让我困惑的事。请帮帮我,伙计们

我有一个表,其中包含一些示例数据,如下所示:

ID NAME ATTRIBUTE 1 John 123 2 Sean 654 3 John 987 4 Audrey 458 5 John 123 6 Audrey 589 7 Peter 257 8 Marc 125 9 Audrey 326 10 Stan 456 11 Carol 698 ID名称属性 约翰一世123 2肖恩654 3约翰987 4奥黛丽458 5约翰123 6奥黛丽589 7彼得257 8 Marc 125 9奥黛丽326 10斯坦456 11卡罗尔698 这是我打算做的事情的清单-

  • 选择前6条记录

  • 从6条选定记录中查找唯一名称–预期结果:3个唯一名称(John、Sean和Audrey)

  • 从选定的6条记录中查找每个唯一名称的属性数–预期结果:John(3个属性)、Sean(1个属性)和Audrey(2个属性)

  • 计算所选6条记录中每个唯一名称的相同属性数–预期结果:名称=>John,属性=>123,出现次数=>2,名称=>John,属性=>987,出现次数=>1等

  • 从上述选择中,以以下格式将数据插入新的数据库表(例如,唯一名称):

    a。NameID(与上一个表不同,新id–自动生成), B名字

    在另一个表中(例如属性)

    a。ID(自动生成), B属性 CNameID(应与上一个中的ID相同)–用于唯一名称和属性表之间的关系) D(每个唯一名称的每个属性的)出现次数

  • 在新表中填入数据后,我想从收集数据的第一个表中删除前6个选中的记录。(上表)

  • 有人能帮我处理MySQL查询和支持PHP代码吗。此外,如果表中有数百万数据,我想知道查询MySQL以获取上述信息的最佳和最快的方法。

    问题1:

    SELECT t.id,  t.name,t.attribute FROM t LIMIT 6
    
    问题2:

    SELECT DISTINCT t.name FROM (SELECT t.id, t.name, t.attribute FROM t LIMIT 6) t
    
    问题3:

    SELECT t.name, COUNT(t.attribute) AS number_of_attributes FROM(SELECT t.id, t.name, t.attribute FROM t LIMIT 6) t
    GROUP BY t.name
    ORDER BY number_of_attributes desc
    
    问题4:

    SELECT t.name, t.attribute, COUNT(t.attribute) AS Appears FROM (SELECT t.id, t.name, t.attribute FROM t LIMIT 6) t
    GROUP BY t.name,t.attribute
    ORDER BY Appears desc
    
    问题5: 第一部分:必须分两步完成,首先从前6名中选择唯一名称,然后添加
    auto_increment
    列:

    CREATE TABLE unique_names SELECT DISTINCT t.name FROM t
    
    ALTER TABLE unique_names ADD name_id INT AUTO_INCREMENT PRIMARY KEY FIRST
    
    第二部分:与第一部分相同,但在本例中,为了获得id,我们与在本步骤第一部分中创建的表连接,然后添加
    auto_increment

    CREATE TABLE attributes SELECT t.attribute,un.name_id FROM t INNER JOIN unique_names un ON t.name=un.name
    
    ALTER TABLE attributes ADD id INT AUTO_INCREMENT PRIMARY KEY FIRST
    
    问题6:

    DELETE FROM t LIMIT 6
    

    在本例中,我使用
    t
    作为原始表名
    LIMIT
    DISTINCT
    /
    分组依据
    计数
    &
    分组依据
    计数(不同的
    插入
    删除
    ,或者读一本SQL简介,或者付钱给别人帮你做这项工作。不,这不是我的家庭作业,只是想自己学点东西。我很自信这是家庭作业,我已经标记了它。仅供参考-有家庭作业问题是可以的,但前提是你对做一些准备工作。哇,这是我写的还是什么?这是我在StackOverflow的第一个问题,我得到的只是误解??100%的工作。谢谢詹姆斯·邦德。