首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql、order-by,首先检查是否和item包含在另一个表中。

mysql、order-by,首先检查是否和item包含在另一个表中。
EN

Stack Overflow用户
提问于 2011-01-20 18:40:54
回答 2查看 118关注 0票数 1

MySQL:

table1

代码语言:javascript
复制
+--------+-------+
| itemid | title |
+--------+-------+
|   1    | title |
+--------+-------+

table2

代码语言:javascript
复制
+----+--------+------------+
| id | itemid |    time    |
+----+--------+------------+
|  1 |    1   | 1295116368 |
+----+--------+------------+
|  1 |    2   | 1295548368 |
+----+--------+------------+
|  2 |    1   | 1294079568 |
+----+--------+------------+

PHP:

代码语言:javascript
复制
$a = mysql_query("SELECT `itemid` FROM `table2` WHERE `id` = '1' ORDER BY `time` DESC")
while($b = mysql_fetch_assoc($a))
{
    echo $b['itemid'].'<br />';
}

输出:

代码语言:javascript
复制
2
1

但是,在上面的查询中,我想做的是也检查itemid是否也包含在table1中,因为当它出现时,我希望它首先出现,尽管它可能是一个较旧的帖子。

我希望这是合理的。

因此,产出应该是:

代码语言:javascript
复制
1
2

因为itemid = 1也包含在table1中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-20 18:45:32

我相信你应该能够加入表格并按标题排序。

代码语言:javascript
复制
SELECT itemid FROM table2
LEFT JOIN table1 USING (itemid) 
WHERE id = '1' ORDER BY title DESC, time DESC

您可能需要翻转标题上的排序,我不记得NULL值是在开头还是结尾排序的。

票数 3
EN

Stack Overflow用户

发布于 2011-01-20 18:45:33

使用:

代码语言:javascript
复制
SELECT `itemid` FROM `table2` t2 LEFT JOIN `table1` t1
ON t2.itemid = t1.itemid WHERE t2.`id` = '1' ORDER BY t1.itemid, t2.`time` DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4751117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档