当DATE_ADDED为0时,使用DATE_ADDED而不是DATE_TAKEN来对Query进行排序

时间:2015-10-09 09:19:42

标签: android sqlite

我想要请求图片并按DATE_TAKEN排序。在某些情况下import numpy def create_profiles(n,month,daytype): if daytype in ['weekday','weekend']: pass else: print 'error in daytype' return 0 if month in range(1,13): pass else: print 'error in month' return 0 no_its = n idstring = str(no_its) + 'x_' + 'month-' + str(month) + '_' + 'daytype-' + str(daytype) occ_profile_for_file = numpy.zeros([no_its,144]) for i in range (0,no_its): occ_profile = get_occ_profile(daytype) occ_profile_for_file[i][:] = occ_profile Occfile = file('Occfile_'+idstring+'.dat', 'a') numpy.savetxt('Occfile_'+idstring+'.dat',occ_profile_for_file,fmt="%d", delimiter='\t') Occfile.close 不可用。 在这种情况下,我想使用DATE_TAKEN作为后备。

是否可以在单个SQL语句中组合它。我有点挣扎,但有了这个。

到目前为止我的代码:

DATE_ADDED

我的想法是这样的:

String[] projection = {
            MediaStore.MediaColumns._ID,
            MediaStore.MediaColumns.DATA,
            MediaStore.MediaColumns.MIME_TYPE,
            MediaStore.Images.ImageColumns.DATE_ADDED,
            MediaStore.Images.ImageColumns.DATE_TAKEN,

            MediaStore.MediaColumns.TITLE,
    };


    String sortString = MediaStore.Images.ImageColumns.DATE_TAKEN + "  ASC";

    Uri target = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

    Cursor cursor = getContentResolver().query(target, projection, null, null, sortString);

但是我发现了一个错误,我甚至不知道是否真的可以做这样的事情。

错误:

String sortString = 
" CASE "+ MediaStore.Images.ImageColumns.DATE_TAKEN +" WHEN  "+  
MediaStore.Images.ImageColumns.DATE_TAKEN +" ==  0 THEN "   + 
MediaStore.Images.ImageColumns.DATE_ADDED + " ASC " +
"ELSE " + MediaStore.Images.ImageColumns.DATE_TAKEN + " ASC END";

1 个答案:

答案 0 :(得分:2)

ASC适用于用于排序的整个表达式,因此您必须一次写入:

CASE WHEN taken == 0 THEN added ELSE taken END ASC

注意:如果您使用的是NULL而不是零,那么使用coalesce

会更容易
COALESCE(taken, added) ASC