考虑一个由多个表组成的View...例如v_active_car,它由连接到body的表car组成>、engine、wheels和stereo。它可能看起来像这样:v_active_carsViewSELECT*FROMcarINNERJOINbodyONcar.body=body.body_idINNERJOINengineONcar.engine=engine.engine_idINNERJOINwheelsONcar.wheels=wheels.wheels_idINNERJOINstereoONcar.stereo=stereo.stereo_idWHEREcar.active
我有一张table,上面有一些table:name|test_date|score-----------------------jon|2012:07:01|95jon|2012:07:01|60jon|2012:07:01|30alex|2012:07:01|80alex|2012:07:01|85alex|2011:05:01|40emile|2011:01:01|89我想为每个名字获取一些行,并使用规则提供有关他的score_grading的信息:得分>79=A,80>分数>49=B否则C.问题是,我想要:如果在同一天有多个相同的score_grade为一个学生,那么它将被计为一
简而言之,如果查询告诉我A与B重叠,那么我不需要它也告诉我B也与A重叠,因为它们彼此重叠。所以我尝试在sql中使用自连接来选择“不同的”重叠部分。为了说明,这是我编写的一个简单的SQLfiddle,用于显示包含重叠选择(http://sqlfiddle.com/#!9/7af84f/1)详细...假设我有一个name(char),d1(int),d2(int)的表,其架构如下。这里d1和d2代表某个区间的开始和结束,这些区间可能与同一个表中的另一个区间重叠。CREATETABLEtest(letterchar,d1int,d2int);鉴于此表,我用一些值填充它INSERTINTOte
我有一个包含pagehit(规范化)数据的表,我需要获取10个最新的唯一ips。我试着这样做:SELECT*FROMspy_hitsORDERBYdatedescGROUPBYipLIMIT10;这应该给我这个结果:+-----+------------+-----+---------+----+------+------+---------+-------+-------+|id|date|ip|browser|os|page|host|referer|query|agent|+-----+------------+-----+---------+----+------+------
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
我有一个包含超过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
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
你认为什么更快?SELECTDISTINCT(user_id)FROMmyTable;然后获取到$myArray。或者SELECTuser_idFROMmyTable;然后获取到$myArray并执行$myArray=array_unique($myArray);注意:user_id是一个FOREIGNKEYCONSTRAINT 最佳答案 为了提高速度和内存效率,您希望从数据库中返回最少数量的数据,而不是为了处理/内存效率而放置不必要的行。因此,在这种情况下,distinct是更好的选择。
这听起来像是一个奇怪的问题,但我正在尝试使用distinct子句来获取数据库中的所有名称,但是我希望名字是唯一的表结构idfnamelnamehaircolor1johndoebrown2bobseagalblonde3kevinsmithred4bobdoegreenDesiredoutputjohndoebrownbobseagalblondekevinsmithredIhavetriedSELECTfname,lname,haircolorFROMMainTableINNERJOIN(selectdistinctframefromMainTable)asNamesONMainTa