首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中的条件选择变量

问mysql中的条件选择变量
EN

Stack Overflow用户
提问于 2012-07-18 02:50:46
回答 1查看 635关注 0票数 0

我正在尝试编写一个SQL查询,它将基于一个日期(这是数据库中的一个整数)进行排序,该日期可能位于2个表中的1个表中,也可以同时位于这两个表中。

与此相关的表中的字段包括:

分配:- id - id_lead - date_assigned

线索:- id - date_added

这些表有其他字段,但它们不适用于此问题。

现在我想要的是,如果没有分配给lead,我希望"date_sort“变量是lead的date_added值。如果有lead的分配,我希望它是分配的date_assigned值。

我的问题是,使用我的查询不会在我的结果列表中显示任何没有分配的销售线索。

这是我的问题,我正在处理:

代码语言:javascript
复制
$pagi_sql = "select 
             l.id, l.id_infusionsoft, l.name_first, l.name_last, l.postcode, a.website as a_website, l.website as l_website, l.date_added,
             a.id_dealership, a.id_lead, a.id as id_assign, a.date_assigned,
             d.name as dealership,
             if(a.id = null, l.date_added, a.date_assigned) as date_sort
             from `leads` as l
             left join `assignments` as a on (a.id_lead = l.id)
             left join `dealerships` as d on (d.id = a.id_dealership)
             $where
             order by date_sort desc";

以下是我的原始查询,它可以工作,但没有按我想要的方式排序:

代码语言:javascript
复制
$pagi_sql = "select 
             l.id, l.id_infusionsoft, l.name_first, l.name_last, l.postcode, a.website as a_website, l.website as l_website, l.date_added,
             a.id_dealership, a.id_lead, a.id as id_assign, a.date_assigned,
             d.name as dealership
             from `leads` as l
             left join `assignments` as a on (a.id_lead = l.id)
             left join `dealerships` as d on (d.id = a.id_dealership)
             $where
             order by l.date_added desc";

leads可以有多个任务……我想这就是problem...but,我想不出如何让它按我想要的方式排序。

我是否应该更改这些设置,以便从assignments表中进行选择?但随后我遇到了这样的问题:如何在同一个表中显示按date_added/date_assigned排序的未分配销售线索?

任何帮助都是很棒的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-18 02:56:39

更改此行:

代码语言:javascript
复制
if(a.id = null, l.date_added, a.date_assigned) AS date_sort

要这样做:

代码语言:javascript
复制
if(a.id IS NULL, l.date_added, a.date_assigned) AS date_sort

第一行没有按您想要的方式排序的原因是因为IF的false条件总是被执行,因为NULL是一个未知值,并且不能等于的任何东西,甚至不能等于它本身。

您必须使用IS NULL而不是= NULL。

请阅读我对此question的answer,了解有关NULL值的更多信息。

编辑:如果你想更简洁,你可以这样做:

代码语言:javascript
复制
COALESCE(a.date_assigned, l.date_added)

此COALESCE()函数将返回第一个非NULL参数。

如果不需要显示date_sort的值,甚至可以将其直接放入ORDER BY子句中:

代码语言:javascript
复制
ORDER BY COALESCE(a.date_assigned, l.date_added)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11528952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档