作者flirmnave (焰离雨星)
看板Database
标题[SQL ] 分组最新并排序和取得表单名称的问题
时间Sat Oct 5 10:09:50 2013
我用的是 MySQL 客户端版本: 5.0.51a
先问短一点的
SELECT files FROM $id;
$id >> 这个是从前端传进来的 决定要在哪个资料表拿资料
那我要怎麽拿目前的资料表名称呢???
我有找到用 SELECT files,database() FROM $id;
这样子可以拿到使用的资料库名称
却找不到拿资料表名称的....
第一个解决了 感谢 cutekid
一直没想到直接把 $id 放进我要回传的 json 就好了...
=======================
另一个问题有点长...
Table_1
------------------------
file Date flag
a1001 2013-10-05 0
a1002 2013-10-04 0
f1001 2013-10-05 0
c1003 2013-10-05 1
f1004 2013-10-03 1
c1005 2013-10-02 1
f1006 2013-10-05 2
a1007 2013-10-04 3
f1008 2013-10-02 3
c1009 2013-10-02 3
------------------------
要拿各组最新的资料出来 并依照日期排序 我用的语法是
SELECT a.files,a.Date,,a.flag
FROM (SELECT files,max(Date) AS max_date FROM $id GROUP BY flag) b
INNER JOIN $id a
ON a.files = b.files AND a.Date = b.max_date
ORDER BY a.Date DESC
但是我发现它每次拿出来的最新资料似乎是不同的
我看了一下资料 是不是因为
a1001 2013-10-05 0
c1003 2013-10-05 1
f1006 2013-10-05 2
a1007 2013-10-04 3
a1007 2013-10-04 3 <<< 这一组排在下面应该没有问题
而 0 1 2 这三组 因为日期是一样的
那它们是怎麽排的啊???
而在第 0 组中
a1001 2013-10-05 0
f1001 2013-10-05 0
这两笔的日期是一样的
它是怎麽决定要拿哪一笔当最新的呢???
或者我们可以决定要拿 a 或 f 开头的当最新的呢???
------------------------
然後我想要一次只拿十笔
所以在上面的语法後面加了
LIMIT $start,10
$start <<一开始是0 第一次拿 第0笔 开始的10笔
第二次会拿 第10笔後的10笔
但是发现它会拿到重复的资料耶
在伺服器直接下 LIMIT 0,100 这样是没问题的
但只要用 LIMIT $start,10 并让它显示在网页中
就会出问题 这是怎麽回事呢??
------------------------
最後 感谢愿意看完这一篇的人
也请知道的人不吝指教
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.143.171.174
※ 编辑: flirmnave 来自: 220.143.171.174 (10/05 11:26)