草庐IT

带有 SUM 和 3 个表的 MySQL JOIN

我有下表(玩家、事件、分数)我想要一份每个球员在2012年获得多少分的列表。我希望列表包含所有球员,即使有些球员在2012年没有参加过比赛。所以理论上它应该打印:OlaHansen6ToveSvendson0KariPettersen0我试过:SELECT*,sum(Points)asPointsFROMPlayersLEFTOUTERJOINScoresONP_Id=PlayerLEFTOUTERJOINEventsONEvent=E_IdANDYear='2012'GROUPbyP_IdORDERbyPointsDESC但这计算了所有年份的所有积分。 最

mysql innodb inner join with longtext 很慢

为了支持事务,我上周将一个项目的所有MySQL表从MyISAM迁移到InnoDB。为此,我使用了altertable命令。大多数工作正常,但是一个特定的查询运行非常非常慢,并且总是给出错误Incorrectkeyfilefortable'/tmp/#sql_xxxx_x.MYI后来我将问题缩小到2个表的内部连接,即user表和agreement表。而内连接发生在user的外键字段(即agreement_id)和agreement的主键字段(即id)。user表只有50,000行数据,而agreement表只有一行。并且我们已经为用户的agreement_id设置了索引。无论如何,这似乎

MySQL 使用来自同一个表的值更新表

我有一个包含4列的表,主键是id、gameId和flag的组合。id|gameId|score|flag--------------------------1|1|10|11|1|20|02|1|1|01|2|10|13|2|1|0我需要更新表格以便:所有gameId2的分数都添加到gameId1中,其中id和flag相同。(例如,通过将第1行和第4行的分数相加,第1行的分数为20)如果发生上述情况,则需要删除gameId2行。如果没有找到上述内容(例如,有一行gameId为2但id和flag与另一行不匹配),则gameId可以更改为1。所以SQL完成后我的表应该是这样的:id|gam

Mysql Join 两表带回收

假设我有两个表:zoo_tblname------dogcatmonkeyliontigerelephantfishpalette_tblrgb------pinkyellowgreen我想对两个表进行连接,使rgb行循环重复。namergb---------------------dogpinkcatyellowmonkeygreenlionpinktigeryellowelephantgreenfishpink我应该如何构建这个查询?我有一个想法,即在加入之前创建一个包含循环rgb值的大型临时表,但即使我这样做,我也必须在加入之前枚举zoo_tbl和临时表。必须有一种更简单/更直接

MySQL 和性能 : use 'IN' or 'JOIN' ?

我有一段代码可以通过ID在数据库中查找一些CD。这是使用“IN”条件完成的:(1)SELECT*FROMalbumWHEREidIN(?,?,?,?,?)下一步是获取与这些专辑关联的轨道。我通过稍微修改“基本”查询来做到这一点。(2)SELECTtrack.*FROMalbumLEFTJOINtrackONtrack.album_id=album.idWHEREalbum.idIN(?,?,?,?,?)现在,我有专辑和轨道。但是,我需要加载轨道的Composer详细信息。由于一些原因,我无法与上述查询一起进行,因此我需要单独进行。我可以做的是根据我得到的轨道查找Composer,我会在

mysql - 如何有条件地选择每行的表和列?

在查询“链接”表的返回结果中,我还想添加一个额外的列,显示从JOIN中选择的“DisplayName”值,条件是每行“toTable”。此外,有时“DisplayName”值是列串联的结果。我的问题是我该怎么做?我可以编写单独的查询并与UNIONALL结合,尽管我想知道是否有条件的方法可以做到这一点“链接”表中的每个条目都描述了两个表(可能有3个或更多表)中的一对条目之间的链接。链接表:|LinkID|fromTable|fromID|toTable|toID||1|A|1|B|1||2|A|1|C|2||3|B|1|C|1||4|C|1|A|1|我想要的查询结果:例如,WHERELi

MySQL Join 表,如果不满足条件仍然返回 null

我有这个MySQL查询SELECTperms.permission_id,perms.long_title,perms.category,gperms.valueFROMacl_permissionsASpermsJOINacl_group_permissionsASgpermsON(perms.permission_id=gperms.permission_idANDgperms.group_id=1)WHEREperms.typeIN('adm','cs')ANDperms.simple_titleNOTIN('adm_','cs_')ORDERBYperms.long_title

mysql - SQL 连接子句返回多次出现的行而不分组

我想从JOIN查询中提取多次出现的记录,但不对它们进行分组。示例表:tbl_namesidName1Mark2John3Jane4Paultbl_locationsidLocation1Berlin2Frankfurt2Stockholm3Helsinki3Madrid3London4ParisID是一个外键。现在,查询的结果将是:idNameLocation2JohnFrankfurt2JohnStockholm3JaneHelsinki3JaneMadrid3JaneLondon即第一个表中的记录在JOIN子句结果中出现不止一次的所有JOIN记录。我当然可以把它分组:SELECTt

mysql - 我如何加入两个计数的总和?

我目前有一个比赛结果表+----------+----------+--------+-----------+--------+-----------+-----------+-----------+|hometeam|awayteam|p1home|p2home...|p1away|p2away...|homescore|awayscore|+----------+----------+--------+-----------+--------+-----------+-----------+-----------+我用相当笨重的查询SELECT(SELECTCOUNT(homete

PHP Inner Join,当一个表有多个输出时使用foreach循环

我有这样一种情况,我有几个表是通过INNERJOIN从中提取的。存在一对多关系,主表中每个公园都有一行,但照片表可能有一些公园有几行。我的代码的工作原理是为每个公园显示一张照片,但我只能显示一张照片。我怀疑问题出在foreach循环中,但我有点难过。这是代码:try{$sql='SELECTparks.id,parks.state,parks.name,parks.description,parks.site,parks.sname,parks.street,parks.city,parks.zip,parks.phone,comments.comment,comments.comme