SQL列2列

时间:2016-06-15 10:40:52

标签: mysql

我有一个包含2列的表格,其中包含文字或1

我想在表上执行简单的SELECT * FROM查询,并按2列

排序

有些行会将一列留空而其他行不会有任何列空白但我想显示包含一行或两列的行,这些行包含结果底部的文本

示例数据:

sequence = 1
col1 = 'hello'
col2 = 'hello'

sequence = 2
col1 = ''
col2 = ''

sequence = 3
col1 = 'hello'
col2 = ''

因此上述数据应按顺序显示(按顺序):

2
3
1

4 个答案:

答案 0 :(得分:4)

您可以明确计算空白数量并将其用于订购:

dt1.merge(dt2,left_on='id', right_on='registry_key_id', how='left')['id'].value_counts()

这会计算值的数量。

注意:如果值真的是order by ((col1 = '') + (col2 = '')) desc 而不是空字符串,那么:

NULL

这两个都使用MySQL功能,即布尔表达式在数字上下文中被视为整数,其中1表示true,0表示false。

答案 1 :(得分:1)

您需要条件订购:

SELECT * FROM YourTable t
ORDER BY CASE WHEN t.col1 = '' THEN 1 ELSE 0 END +
         CASE WHEN t.col2 = '' THEN 1 ELSE 0 END DESC,
         t.col1,t.col2

答案 2 :(得分:0)

SELECT  *
FROM    table
ORDER BY 
        col1 ASC
        , col2 ASC 

你甚至可以限制它

SELECT  *
FROM    table
ORDER BY 
        col1 ASC LIMIT 3
        , col2 ASC LIMIT 3

答案 3 :(得分:-1)

您可以Title: