Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按时间戳排序记录,但首先列出指定ID_Php_Mysql_Sql Order By - Fatal编程技术网

Php 按时间戳排序记录,但首先列出指定ID

Php 按时间戳排序记录,但首先列出指定ID,php,mysql,sql-order-by,Php,Mysql,Sql Order By,MySQL 订购人: 从id等于2 然后按时间戳下单 顺序应该是:2,3,1你可以用UNION。。。但我会避免 $a = mysql_query("SELECT * FROM `table` ORDER BY ?? DESC, `timestamp` DESC"); $a = mysql_query("SELECT * FROM `table` WHERE id = 2 ORDER BY `timestamp` DESC UNION SELECT * FROM `table` WHERE id

MySQL

订购人:

  • id
    等于
    2

  • 然后按时间戳下单


  • 顺序应该是:2,3,1你可以用UNION。。。但我会避免

    $a = mysql_query("SELECT * FROM `table` ORDER BY ?? DESC, `timestamp` DESC");
    
    $a = mysql_query("SELECT * FROM `table` WHERE id = 2 ORDER BY `timestamp` DESC UNION SELECT * FROM `table` WHERE id != 2 ORDER BY `timestamp DESC");
    

    考虑到我在第二次查询中没有一个UNION ALL,id=2的记录将不会被复制。

    您可以使用UNION。。。但我会避免

    $a = mysql_query("SELECT * FROM `table` WHERE id = 2 ORDER BY `timestamp` DESC UNION SELECT * FROM `table` WHERE id != 2 ORDER BY `timestamp DESC");
    
    $a = mysql_query("
                      (SELECT * FROM `table` WHERE id = 2 ) UNION 
                      (SELECT * FROM table ORDER BY timestamp DESC)
                    ");
    


    考虑到我在第二次查询中没有一个UNION ALL,id=2的记录将不会被复制。

    有什么理由复制/粘贴我的答案吗^_^@是123 Jody的答案与您的答案不同。因为我们在同一时间提交=-\n他们可能在您单击“提交”时键入了它…相差仅18秒。我的$0.02有什么理由复制/粘贴我的答案吗^_^@是123 Jody的答案与您的答案不同。因为我们在同一时间提交=-\n他们可能在您单击“提交”时键入了它…相差仅18秒。我的$0.02为什么是-1?它返回您想要的。它是否显示语法错误<代码>时间戳应为反勾号。我正在更新答案问题有点不清楚,但是:“顺序应该是:2,3,1”@Frank Farmer:我同意,不清楚。但是这个问题也有按时间戳排序的问题,所以我假设除了id=2之外的所有记录都正确排序。但也有可能期望的顺序是
    id=2
    ,然后是
    id DESC
    。为什么是-1?它返回您想要的。它是否显示语法错误<代码>时间戳应为反勾号。我正在更新答案问题有点不清楚,但是:“顺序应该是:2,3,1”@Frank Farmer:我同意,不清楚。但是这个问题也有按时间戳排序的问题,所以我假设除了id=2之外的所有记录都正确排序。但也有可能期望的顺序是
    id=2
    ,然后是
    id DESC
    。这是斯巴达!这么多的反对票没有任何批评,难道没有解决办法吗?顺便说一句,这是一个有效的答案。对不起,如果有人发布它,“没有解决方案/不可能”是一个有效的答案。你说“不可能”是什么意思?这确实是可能的,我在这里看到了至少3个正确答案。这是一个新的否决权竞争吗?哈哈,我第一次看到所有被否决的答案。这是斯巴达!这么多的反对票没有任何批评,难道没有解决办法吗?顺便说一句,这是一个有效的答案。对不起,如果有人发布它,“没有解决方案/不可能”是一个有效的答案。你说“不可能”是什么意思?这确实是可能的,我在这里看到了至少3个正确答案。这是一个新的向下投票竞争吗?
    $a = mysql_query("
                      (SELECT * FROM `table` WHERE id = 2 ) UNION 
                      (SELECT * FROM table ORDER BY timestamp DESC)
                    ");
    
    SELECT * FROM `table` where id = 2
    union 
    SELECT * FROM `table` where id != 2 order by id, timestamp desc