标签: sql-order-by

MySQL SELECT CASE WHEN返回null

who

wid--name-------father---mother  
1----Daisy------David----Liza  
2----Jenny------Joe------Judy  
3----Meggy------Mike-----Manuela  
4----Sarah------Joe------Judy  
5----Chelsea----Bill-----Hillary  
6----Cindy------David----Liza    
7----Kelly------Joe------Judy 
Run Code Online (Sandbox Code Playgroud)

ages

aid---whoid---age  
1-----1--------0  
2-----2--------0  
3-----3-------14  
4-----4-------30  
5-----5-------22  
6-----6-------17  
7-----1-------18  
Run Code Online (Sandbox Code Playgroud)

我希望该列表成为结果:

id---name------age  
1----Meggy-----14  
2----Cindy-----17  
3----Daisy-----18 (Selected data that bigger than 0)  
4----Chelsea---22  
5----Sarah-----30  
6----Jenny-----30 (Her age is 0 on ages table and Sarah's age with same father and mother)  
7----Kelly-----30 (No data on ages table and Sarah's age with same father and mother)
Run Code Online (Sandbox Code Playgroud)

我试过那个查询:

SELECT 
    *,  
    (CASE age  
        WHEN '0' THEN (
            SELECT age 
            FROM ages a 
            LEFT JOIN who …
Run Code Online (Sandbox Code Playgroud)

mysql select case sql-order-by

15
推荐指数
1
解决办法
6万
查看次数

如何在Doctrine 2中按计数排序?

我正在尝试按字段(年份)对我的实体进行分组并对其进行计数.

码:

public function countYear()
{
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select('b.year, COUNT(b.id)')
        ->from('\My\Entity\Album', 'b')
        ->where('b.year IS NOT NULL')
        ->addOrderBy('sclr1', 'DESC')
        ->addGroupBy('b.year');
    $query = $qb->getQuery();
    die($query->getSQL());
    $result = $query->execute();
    //die(print_r($result));
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法说,COUNT(b.id) AS count因为它给出了一个错误,我不知道该用什么作为addOrderby(???, 'DESC')值?

sql-order-by query-builder doctrine-orm

15
推荐指数
2
解决办法
2万
查看次数

LEFT JOIN订单和限制

这是我的查询:

SELECT `p`.`name` AS 'postauthor', `a`.`name` AS 'authorname',
       `fr`.`pid`, `fp`.`post_topic` AS 'threadname', `fr`.`reason`
  FROM `z_forum_reports` `fr`
  LEFT JOIN `forums` `f` ON (`f`.`id` = `fr`.`pid`)
  LEFT JOIN `forums` `fp` ON (`f`.`first_post` = `fp`.`id`) 
  LEFT JOIN `ps` `p` ON (`p`.`id` = `f`.`author_guid`)
  LEFT JOIN `ps` `a` ON (`a`.`account_id` = `fr`.`author`)
Run Code Online (Sandbox Code Playgroud)

我的问题是这个左连接:

SELECT `a`.`name`, `a`.`level`
[..]
LEFT JOIN `ps` `a` ON (`a`.`account_id` = `fr`.`author`)
Run Code Online (Sandbox Code Playgroud)

因为,如果a有很多行,它会像我的情况一样返回:

NAME  | LEVEL
Test1 | 1
Test2 | 120
Test3 | 2
Test4 | 1 
Run Code Online (Sandbox Code Playgroud)

我希望它选择 …

mysql join sql-order-by left-join

15
推荐指数
1
解决办法
3万
查看次数

ORDER BY 5 DESC是什么意思?

SELECT Departamentos.Nome_Dep,  
       Funcionarios.Nome AS Funcionario,
       Funcionarios.Salario,
       AVG(Funcionarios.Salario) OVER(PARTITION BY Departamentos.Nome_Dep) "Média por Departamento"
       Salario - AVG(Funcionarios.Salario) OVER(PARTITION BY Departamentos.Nome_Dep) "Diferença de Salário"   FROM Funcionarios
INNER JOIN Departamentos
    ON Funcionarios.ID_Dep = Departamentos.ID
ORDER BY 5 DESC
Run Code Online (Sandbox Code Playgroud)

5号令令我失望.我从来都不喜欢它.订单按[colunmname]是,但订单按[编号],从未见过.我把它从一篇文章中删除了.

注意:这是T-SQL.

来源:SQL Server 2005,2008,2012中的窗口函数

t-sql sql-server-2005 sql-order-by sql-server-2008

15
推荐指数
3
解决办法
3万
查看次数

在Sql Server中使用Union的order by子句

我希望第一个选项的名单列表为数据库中的"全部".但我不会将"全部"插入数据库,只需要检索时间.所以,我写了这个查询.

Select 0 PartyId, 'All' Name
Union
select PartyId, Name
from PartyMst
Run Code Online (Sandbox Code Playgroud)

这是我的结果

0   All
1   SHIV ELECTRONICS
2   AAKASH & CO.
3   SHAH & CO.
Run Code Online (Sandbox Code Playgroud)

当我使用order by Name它时显示以下结果.

2   AAKASH & CO.
0   All
3   SHAH & CO.
1   SHIV ELECTRONICS
Run Code Online (Sandbox Code Playgroud)

但是,我希望第一个选项为"全部",然后按排序顺序列出各方.我怎样才能做到这一点?

sql sql-server union sql-order-by

15
推荐指数
1
解决办法
3万
查看次数

什么是MS SQL Server功能类似于MySQL FIELD()函数?

MySQL提供了一个名为FIELD()的字符串函数,它接受可变数量的参数.返回值是剩余值列表中第一个参数的位置.换一种说法:

FIELD('d', 'a', 'b', 'c', 'd', 'e', 'f')
Run Code Online (Sandbox Code Playgroud)

将返回4,因为'd'是第一个之后的第四个参数.

此函数提供基于非常特定的排序对查询结果进行排序的功能.对于我目前的申请,我需要管理四种状态:活跃,已批准,拒绝和提交.但是,如果我只是按状态列进行排序,我觉得结果列表的可用性会降低,因为被拒绝的活动状态项比提交和批准的项更重要.

在MySQL中,我可以这样做:

SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')
Run Code Online (Sandbox Code Playgroud)

并且将对结果进行排序,以便首先拒绝项目,然后是活动项目,依此类推.因此,结果的排序降低了对访客的重要性.

我可以创建一个单独的表来枚举状态的这个重要性级别,然后按降序排序查询,但是自从切换到MS SQL Server以来,这已经出现了几次,所以我想我会查询到是否可以使用类似于MySQL的FIELD()的内置函数来避免额外的表和更复杂的查询.

谢谢
David Kees

mysql sql t-sql sql-server sql-order-by

14
推荐指数
1
解决办法
9519
查看次数

PostgreSQL ORDER BY问题 - 自然排序

ORDER BY在下表中遇到了Postgres 问题:

em_code  name
EM001    AAA
EM999    BBB
EM1000   CCC
Run Code Online (Sandbox Code Playgroud)

要向表中插入新记录,

  1. 我选择了最后一条记录 SELECT * FROM employees ORDER BY em_code DESC
  2. 从em_code中删除使用reg exp和存储的字母 ec_alpha
  3. 将重映射部分转换为整数 ec_num
  4. 增加一个 ec_num++
  5. 垫有足够zeors和前缀ec_alpha再次

em_code到达EM1000,上述算法失败.

第一步将返回EM999而不是EM1000,它将再次生成EM1000为新的em_code,打破了唯一键约束.

知道如何选择EM1000吗?

sql postgresql types natural-sort sql-order-by

14
推荐指数
5
解决办法
1万
查看次数

如果对非唯一属性进行排序,PostgreSQL订单是否完全有保证?

可能重复:
为什么SQL查询的结果不会按照我期望的顺序返回?

从阅读7.5排序行和我在PostgreSQL中看到的问题,我的印象如下,但该部分并不完全明确,所以如果有人可以验证我将不胜感激:

SELECT * FROM items;
Run Code Online (Sandbox Code Playgroud)

没有保证的订单.

SELECT * FROM items ORDER BY published_date ASC;
Run Code Online (Sandbox Code Playgroud)

保证两个项目具有不同的日期来,在给定的顺序,但并不能保证两个项目具有相同的日期总是以相同的顺序.

SELECT * FROM items ORDER BY published_date ASC, id ASC;
Run Code Online (Sandbox Code Playgroud)

始终以相同的顺序返回项目,因为它是完全确定的.

我有这个权利吗?

我不太清楚对一个属性(例如published_date)的排序是否保证具有相同值的记录的顺序,如第二个示例中所示.

sql postgresql sql-order-by

14
推荐指数
1
解决办法
3852
查看次数

MySql:ORDER BY父母和孩子

我有一张桌子:

+------+---------+-
| id   | parent  |
+------+---------+
| 2043 |    NULL |
| 2044 |    2043 |
| 2045 |    2043 |
| 2049 |    2043 |
| 2047 |    NULL |
| 2048 |    2047 |
| 2043 |    2047 |
+------+---------+
Run Code Online (Sandbox Code Playgroud)

它显示了一个简单的2级"亲子" - 核心.我怎样才能通过SELECT语句来获取上面列表中的顺序,这意味着:第一个父项,第一个父项的子项,第二个父项,第二个父项的子项等等(如果我有,我可以添加为孩子们订购BY ...我希望).是否可以添加排序字段?

mysql sql sql-order-by

14
推荐指数
2
解决办法
9768
查看次数

如何在SQL Server中使用OFFSET和Fetch without Order by

我想在我的SQL server 2012查询中使用OFFSET和Fetch.但没有任何顺序.我不能使用order by.Because我的排序顺序将丢失.我如何使用OFFSET和Fetch没有order by和行号以及我的查询中的位置?我的2个选择表具有相同的结构.

INSERT INTO @TempTable [some columns]  
select [some columns] from table1 order by col1 
INSERT INTO @TempTable [same columns]
select [some columns] from table2 order by col2
select * from @TempTable OFFSET 20 ROWS FETCH NEXT 50 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

此查询在OFFSET关键字处有语法错误.

sql-server sql-order-by fetch offset sql-server-2012

14
推荐指数
3
解决办法
1万
查看次数