我是新人!这是新的,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
以下是我打算做的清单 -
选择前6条记录
从6条选定的记录中查找唯一名称 - 预期结果:3个唯一名称(John,Sean& Audrey)
从选定的6条记录中查找每个唯一名称的属性数 - 预期结果:John(3个属性),Sean(1个属性)和Audrey(2个属性)。
计算所选6条记录中每个唯一名称的相同属性数 - 预期结果:名称=>约翰,属性=> 123,发生次数=> 2,Name =>约翰,属性=> 987,出现次数=> 1等。
从上面的选择中,以下列格式将数据插入新数据库表(例如,唯一名称):
一个。 NameID(与最后一个表不同,新id - 自动生成), 湾姓名
在另一个表格中(例如属性)
一个。 ID(自动生成), 湾属性, C。 NameID(应该与最后的ID相同) - 这是针对唯一名称和属性表之间的关系) d。出现(每个唯一名称的每个属性)
一旦新表填满了数据,我想从收集它们的第一个表中删除前6个选定记录。 (顶级表)
有人可以帮助我查询MySQL查询和支持PHP代码。另外,如果我在表中有数百万的数据,我想知道查询MySQL的最佳和最快的方法。
答案 0 :(得分:0)
问题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:
第一部分:必须分2步完成,首先选择唯一的名称 - 从首先选择的前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
作为原始表名