繁体   English   中英

如何在没有IFNULL的情况下获得相同的结果-MySQL

How to get the same result without IFNULL - MySQL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我以sqlfiddle为例: http ://sqlfiddle.com/#!9/3bbb6d/1/0

    SELECT
        `Image`.`id`,
        `Topic`.`title`
    FROM
        `images` AS `Image`, `topics` AS `Topic`
    WHERE
        `Image`.`vender_id` = 'model' AND `Topic`.`id` = IFNULL((SELECT article_id FROM articles_images WHERE image_id = `Image`.`id` ORDER BY id DESC LIMIT 0, 1), 999)
    ORDER BY
        `Image`.`id` DESC
    LIMIT 10

结果:(正确)

id  title
8   
7   
5   CCC
4   DDD
3   BBB
2   BBB
1   

没有IFNULL(..., 999) http://sqlfiddle.com/#!9/3bbb6d/2

结果:

id  title
5   CCC
4   DDD
3   BBB
2   BBB

但是我还需要空“ title ” => id:8、7和1的记录

有没有办法在不使用IFNULL的情况下拥有所有记录?

+++更新+++

@Used_By_Already

谢谢您的帮助。 我得到了结果:(它有两个ID为5的记录)

id  title
8   (null)
7   (null)
5   AAA              << X
5   CCC              << correct 
4   DDD
3   BBB
2   BBB
1   (null)

有两个具有相同ID的记录:5,如何仅获得由articles_images.id记录最高的记录?

我需要得到的结果是:

id  title
8   
7   
5   CCC
4   DDD
3   BBB
2   BBB
1   
2 个回复

使用左联接:

SELECT
     I.id
    ,T.title
FROM images AS i
LEFT JOIN articles_images AS ai ON I.id = ai.image_id
LEFT JOIN topics AS t on ai.article_id = t.id
WHERE i.vender_id = 'model' 
ORDER BY
    i.id DESC
LIMIT 10

结果与您要求的结果略有不同:

+----+-------+
| id | title |
+----+-------+
|  8 | NULL  |
|  7 | NULL  |
|  5 | AAA   |
|  5 | CCC   |
|  4 | DDD   |
|  3 | BBB   |
|  2 | BBB   |
|  1 | NULL  |
+----+-------+

对于RE修改的问题(包括NULL):

SELECT
     I.id
    ,max(T.title) as title
FROM images AS i
LEFT JOIN articles_images AS ai ON I.id = ai.image_id
LEFT JOIN topics AS t on ai.article_id = t.id
WHERE i.vender_id = 'model' 
GROUP BY
     I.id
;

+----+-------+
| id | title |
+----+-------+
|  1 | NULL  |
|  2 | BBB   |
|  3 | BBB   |
|  4 | DDD   |
|  5 | CCC   |
|  7 | NULL  |
|  8 | NULL  |
+----+-------+

参见: https : //rextester.com/LCOBW94449


为了保证您使用的是最高article_if,如果我建议这样做:

SELECT
     I.id
    ,T.title
FROM ximages AS i
LEFT JOIN (
            SELECT image_id, max(article_id) article_id
            FROM xarticles_images
            GROUP BY image_id
          ) AS ai ON I.id = ai.image_id
LEFT JOIN xtopics AS t on ai.article_id = t.id
WHERE i.vender_id = 'model' 
ORDER BY
    i.id DESC
;

使用左联接

      SELECT
        i.`id`,
        t.`title`
    FROM
        `images` AS i left join `topics` AS  t on  i.`vender_id` = 'model' 
         and t.`id`=i.article_id 
1 MySQL IFNULL不返回结果

我正在尝试通过以下方法获取剩余图书数量 库存=总数+(已接收-已发出); 表格book_qnt -Quantiy书籍清单 桌上book - book清单 表book_trns图书book_trns清单 仅适用于具有接收和发行价值的书籍。 在DB语言 ...

2 如何使用mysql“ IFNULL”

据我所知IFNULL()函数是 IFNULL(exp1,exp2),当exp1 = null时将输出exp2 但我尝试这样的一些条件 但是结果仍然为null不为空 我不知道哪里有问题 有谁可以教我如何解决? ...

2016-04-26 03:47:04 2 1451   mysql
3 MySQL返回值,即使没有结果-IFNULL

当MySQL SELECT 语句没有结果时,我想要一个特定的value(55) 。 我试过了,但是没有用。 //以下语句运行,但是当我尝试使用IFNULL ..时不起作用... ...

2014-01-12 19:45:53 1 175   mysql/ sql
4 IFNULL 查询给出 2 行相同的结果

我正在尝试在我的项目中制作年度报告。 我很难让这个查询返回 1 行中的计数。 如果没有不同年份的交易(如本例中的 2016 年),则结果显示 1 行。 当我在执行此代码时插入与“今年”不同年份的交易时,结果显示 2 行具有相同的结果: 有什么方法可以解决这个问题或其他可以使它工作的查询? ...

2017-08-29 06:16:25 3 49   mysql
5 MySQL-如何发表陈述和IFNULL

我该如何做这个语句AND IFNULL ? TIMESTAMPDIFF(YEAR,a.date_of_birth,CURDATE()) &gt;= '' AND TIMESTAMPDIFF(YEAR,a.date_of_birth,CURDATE()) &lt;= '' : 使用AN ...

2017-10-04 01:44:08 1 35   mysql
6 MongoDb无法从$ ifNull获得结果

我正在使用以下脚本来将引号更新为包含在4字符串数组中的字符串中的转义字符,并且无法使$ ifnull正常工作。 尝试了多种形式,最新的是: 即使v [1]为null,测试变量仍会从print语句输出以下内容: 然后,replace语句返回以下错误: 如果有更好或更简单的 ...

7 如何在r中没有for循环的情况下获得相同的结果?

我正在寻找另一种方法来实现相同的结果,因为 for 语句太慢了。 我有以下数据框。 函数 f 接受一个用户 ID 并返回一个特定的结果。 我想要的结果如下。 我正在运行如下代码的循环,但速度太慢。 每个用户大约需要 3 秒,3*50000 秒获得总共 50,000 个用户。 有没 ...

8 如何在单个mysql查询中获得相同的结果

现在我使用两个查询来计算特定点击的联系次数。 我已经尝试了很多东西,比如left join 、 right join 、 union ,但我可以检索到预期的结果。 第一个查询 返回 而第二 返回 如何进行单个查询以获得这种结果? 不用担心,如果我没有returnClick,我当 ...

2016-03-09 11:07:23 6 68   mysql
9 MySQL中的IFNull

我是SQL的新手,正在尝试使用一组列创建一个计算字段。 但是,其中一些值可能为NULL。 如果它们为NULL,则我不希望计算字段返回NULL结果,而是设置一些任意值。 这是计算的字段 ...

10 MySQL如何根据优先级使用ifnull?

这是我的查询结果的示例(我可以在SELECT中访问这些值) 根据我的结果,我只想获得一个输出,而不是上面产生的结果。 基于这三列,费率条件为: 优先: 季节性利率&gt;周末利率&gt;默认利率 因此,如果季节性不为空,则选择季节性。 如何在mysql中选择最终输出 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM