草庐IT

mysql - 如果其中一个查询返回 null,如何防止 MySql Cross Join Query 返回零结果

我使用此查询在mysql事件表中获取下一个和上一个事件的ID:SELECTe.idAScurrent,prev.idASprevious,next.idASnextFROMeventseCROSSJOIN(SELECTidFROMeventsWHEREdate'{$result['date']}'ORDERBYdateLIMIT1)nextWHEREe.date='{$result['date']}'这个查询工作正常。假设表格看起来像这样:ID|EVENT_NAME|DATE------------------------------1|testevent1|2012-01-012|t

MySQL SELECT + LEFT JOIN + IF 查询

我有一个名为类别的简单数据库表:category.idcategory.namecategory.lang1'apple''en'1'manzana''es'1'''de'1'''it'变量:$default_lang='en';$current_lang='it';我想根据$current_lang进行查询,返回category_name字段,但是如果category.name为空,那么应该像这样使用$default_lang中的category.name:SELECT*FROMcat_listLEFTJOINcategoryONcal_list.id=category.idANDI

MySQL嵌套连接

我有一个包含用户信息(fname、lname...等)的用户表和一个发票表。在发票表中,我有一个名为created_id的字段,它链接到创建发票的user.id。我还有一个名为staff_id的字段,它链接到批准发票的员工user.id。如何在单个查询中同时查询created_id和staff_id的名字和姓氏?以下是我尝试过的一些方法......SELECTinvoices.*,users.fnameascreated_fname,users.lnameascreated_lnameFROMinvoicesINNERJOINusersONusers.id=invoices.creat

mysql - 你如何使用 JOIN 而没有 ID 进行删除?

以下查询生成我要删除的记录列表...SELECT*FROM`orderitems`asoiLEFTJOIN`orders`asoON(o.`orderid`=oi.`orderid`)WHEREo.`date`='2012-10-05'ANDo.`status`='init';不幸的是,这些表的设计没有id字段。我看过其他带有连接的删除,但都使用id字段。这不起作用:DELETEFROM`orderitems`asoiLEFTJOIN`orders`asoON(o.`orderid`=oi.`orderid`)WHEREo.`date`='2012-10-05'ANDo.`status

mysql - 使用 JOIN 选择在第二个表上有 2 个条件的行

我有2个表:goods和cats_goods(关系表)。商品:id,name。Cats_goods:good_id,cat_id。如何只选择cat_id=4和cat_id=24的goods?尝试过:SELECTDISTINCT*FROM`goods`AS`g`JOIN`cats_goods`AS`cg`ON(`g`.`id`=`cg`.`good_id`)WHERE(`cg`.`cat_id`=24AND`cg`.`cat_id`=4)查询给出0个结果!更新:对于每个good,在cats_goods中有1行cat_id=4,在cats_goods中有一行cat_id=24。我只需要选择

mysql - SQL:在不覆盖行的情况下加入后的 GROUP BY?

我有一张篮球联赛表、一张球队表和一张球员表,如下所示:LEAGUESID|NAME|------------------1|NBA|2|ABA|TEAMS:ID|NAME|LEAGUE_ID------------------------------20|BULLS|121|KNICKS|2PLAYERS:ID|TEAM_ID|FIRST_NAME|LAST_NAME|---------------------------------------------1|21|John|Starks|2|21|Patrick|Ewing|给定一个联赛ID,我想从该联赛的所有球队中检索所有球员的姓

mysql - 为什么递归查询比 join 和 group by 更快?

我正在使用MySQL服务器5.5并具有下一个数据库结构---------------------------------------------------------Table`mydb`.`User`-------------------------------------------------------CREATETABLEIFNOTEXISTS`mydb`.`User`(`id`INTNOTNULL,`Name`VARCHAR(45)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDB;--------------------------------

mysql - 使用连接表中的两个计数编写 JOIN 查询

我已经花了几个小时来解决这个问题,但我无法让计数正常工作。希望有人能帮忙?!我有一个项目表和任务表,链接在project_id上。我可以通过以下查询获取project_id、project_name和status_id:SELECTa.project_id,a.project_name,b.status_idFROMproject_listasaINNERJOINtask_listasbONa.project_id=b.project_id我想为每个项目选择一条记录,并根据status_id添加两个计数字段。在伪代码中:SELECTa.project_id,a.project_name

带有内部连接和子查询的mysql限制

我有以下查询:SELECTsaturday_combinations.index,v.valAS`row`,COUNT(*)AS`count`FROMsaturday_combinationsINNERJOIN(SELECTONEASvalFROMsaturday_combinationsWHEREONEISNOTNULLUNIONSELECTTWOASvalFROMsaturday_combinationsWHERETWOISNOTNULLUNIONSELECTTHREEASvalFROMsaturday_combinationsWHERETHREEISNOTNULLUNIONSEL

连接 N-1 和 N-N 的 mySQL 嵌套

我正在尝试连接4个表,两个1-N表和一个通过N-N表。奇怪的是,mySql似乎不喜欢我的语法之一。有人知道这是由于myOwn限制还是mySql造成的吗?这行不通:SELECT*FROMtableOnet1JOINtableTwot2LEFTOUTERJOINN_N_tableThreet3JOINtableFourt4ONt4.id=t3.fk_tableFourONt2.id=t3.fk_tableTwoONt2.id=t1.fk_tableTwo虽然这确实有效SELECT*FROMtableOnet1,tableTwot2LEFTOUTERJOINN_N_tableThreet3J