Tbl_responses有编号回应消息标识符用户名有5,000条记录。“zac1987”发布了800条回复。“zac1987”发布的800条回复中有30条msgid不同。SELECTDISTINCTmsgidFROMTbl_responsesWHEREusername='zac1987';目前ExplainSQL显示有800行受到影响。如何优化查询以便只影响30行?我认为必须有一个解决方案来避免循环/过滤800条记录...就像用我的博客上显示的JOIN子句问题替换WHERE子句一样...ye5.blogspot.com/2011/07/optimize-faster-mysql-qu
让我们考虑这个表,它指定了一个人购买特性的次数。+--------+----------+|user|property|+--------+----------+|john|car||john|car||john|house||peter|car||peter|car||amanda|house||amanda|house|+--------+----------+我需要知道一辆车被买了多少次,房子被买了多少次,等等。像这样:+----------+---+---+|property|1|2|+----------+---+---+|cars|4|2||house|3|1|+-----
我有一个包含超过30K行和多列的表格。例子:id|year|make|model|color1|2001|gm|truck|red2|2004|gm|truck|green3|2001|nissan|Max|yellow4|2001|gm|truck|blue5|2002|gm|truck|green6|2001|nissan|Sentra|green由于每个品牌型号和年份都有很多颜色,我需要找出每辆车有多少种颜色。期望的结果:2001NissanMax5colors2001GMTruck10colors无需知道什么颜色,只需知道多少颜色。我尝试了以下方法:SELECTCOUNT(DI
我有三个表,结构如下。此表(称为contest_submissions)存储提交和比赛的关系。ContestID|SubmissionID11000110011100211003第二个表(称为submissions)存储提交的详细信息:SubmissionID|ProblemID|User|Score|Time10001000A100100010011000A40125010021001A50150010031001B201750另一个表(称为contest_contestants)包含:ContestID|User1A1B我写了下面的SQL:SELECT*,(SELECTSUM(sc
User表结构。+------+-------+|id|data|+------+-------+|1|a|+------+-------+|1|b|+------+-------+|2|c|+------+-------+期望的结果。+------+-------+|id|count|+------+-------+|1|2|+------+-------+|2|1|+------+-------+我以多种方式尝试了DISTINCT和COUNT,但仍然没有得到想要的结果。我在做什么$this->User->find('all',array('conditions'=>array(),
我有下表,我想在列[code]上做一个selectdistinct,我不需要得到“A”三次。[ID][CODE][LIBELLE]1ALIBELLE12BLIBELLE23CLIBELLE34ALIBELLE45ALIBELLE56DLIBELLE6我想要的结果如下[ID][CODE][LIBELLE]1ALIBELLE12BLIBELLE23CLIBELLE36DLIBELLE6 最佳答案 只需添加groupbycodeORDERBYcodeASC在你的sql查询结束时示例select*fromtablegroupbycodeOR
所以,这是我的表格:Id|name|Store001|John|A001|John|A001|John|A001|John|B001|John|B001|John|D002|Bob|B002|Bob|C003|Dave|C004|Pamela|A004|Pamela|B004|Pamela|C005|Nick|D005|Nick|D005|Nick|D我如何选择然后计算所有在A和B购物的人,然后只有A和B?A或B但没有其他?只有D吗?在我的示例中,预期结果是:(1)John+Pamela,(2)John,(3)John(4)Nick 最佳答案
我有两张表,一张用于团队,一张用于玩家我想找出的是总人数表,换句话说,我想计算拥有2名成员的团队总数,所有拥有3名成员等的团队数量这是数据库结构。(边栏问题:我是这里的新手:有没有更好的方法来发布SQL?)CREATETABLE`formsfiles`.`Teams`(`ID`INTNOTNULLAUTO_INCREMENT,`Name`VARCHAR(45)NULL,PRIMARYKEY(`ID`));INSERTINTO`Teams`(`Name`)VALUES('Sharks');INSERTINTO`Teams`(`Name`)VALUES('Jets');INSERTINTO
你认为什么更快?SELECTDISTINCT(user_id)FROMmyTable;然后获取到$myArray。或者SELECTuser_idFROMmyTable;然后获取到$myArray并执行$myArray=array_unique($myArray);注意:user_id是一个FOREIGNKEYCONSTRAINT 最佳答案 为了提高速度和内存效率,您希望从数据库中返回最少数量的数据,而不是为了处理/内存效率而放置不必要的行。因此,在这种情况下,distinct是更好的选择。
这听起来像是一个奇怪的问题,但我正在尝试使用distinct子句来获取数据库中的所有名称,但是我希望名字是唯一的表结构idfnamelnamehaircolor1johndoebrown2bobseagalblonde3kevinsmithred4bobdoegreenDesiredoutputjohndoebrownbobseagalblondekevinsmithredIhavetriedSELECTfname,lname,haircolorFROMMainTableINNERJOIN(selectdistinctframefromMainTable)asNamesONMainTa