PHP-MySQL联合查询,按2个变量排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-MySQL联合查询,按2个变量排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2549字,纯文字阅读大概需要4分钟。
内容图文
![PHP-MySQL联合查询,按2个变量排序](/upload/InfoBanner/zyjiaocheng/887/a7901060df9c4cf1834afe43a7a8b72e.jpg)
每个表(表1和表2)具有其自己的DATETIME字段.
我正在尝试捕获两个表的ID,并按其DATETIME字段对其进行排序.
例:
Table 1 Table 2
------------ -------------
id | datetime1 id | table1id | datetime2
------------------------ -----------------------
1 | 2014-09-21 20:31:26 1 | 2 | 2014-09-21 20:31:29
2 | 2014-09-21 20:31:27 2 | 3 | 2014-09-21 20:31:30
3 | 2014-09-21 20:31:28
Table 3
------------
id | user
------------------------
2 | phil
3 | nathalie
我的输出未通过以下查询正确排序:
SELECT *
FROM (
SELECT
1 AS selection,
table1.id, table1.datetime1,
table2.datetime2
table3.user
FROM Table1
LEFT OUTER JOIN table2
ON table1.id = table2.table1id
LEFT OUTER JOIN table3
ON table1.id = table3.id
UNION ALL
SELECT
2 AS selection,
table1.id, table1.datetime1,
table2.datetime2
table3.user
FROM Table1
INNER JOIN table2
ON table1.id = table2.table1id
INNER JOIN table3
ON table1.id = table3.id
) AS query
ORDER BY table1.datetime1 DESC, table2.datetime2 DESC
所需数据:
从表2 id:2,1,
从表1 id:3,2,1
因此:2、1、3、2、1
////编辑
对于可能要处理冗长而复杂的MySQL请求的人们,请在PhpmyAdmin中尝试一下!它会告诉您错误!
////编辑
解决方法:
您真正需要做的是更仔细地考虑架构.考虑将日期时间列命名为相同的名称,然后运行如下查询-http://sqlfiddle.com/#!2/a3b4c/7/0
SELECT selection, id, datetimefoo, user FROM (
SELECT
1 AS selection,
table1.id, table1.datetimefoo,
table3.user
FROM table1
LEFT OUTER JOIN table2
ON table1.id = table2.table1id
LEFT OUTER JOIN table3
ON table1.id = table3.id
UNION
SELECT
2 AS selection,
table1.id, table1.datetimefoo,
table3.user
FROM table1
INNER JOIN table2
ON table1.id = table2.table1id
INNER JOIN table3
ON table1.id = table3.id
) AS T2
ORDER BY datetimefoo DESC
在SQL提琴中,这会产生与您要查找的结果更接近的结果.我仍然不确定为什么您需要在第二个查询上使用INNER JOINS-在这里您不需要做什么.
这是另一种方法,不需要更改列名,但需要可排序列的别名-http://sqlfiddle.com/#!2/ec4bc/3/0
SELECT * FROM (
SELECT
1 AS selection,
table1.id, table1.datetimefoo AS sort_date, -- alias on first table's date
table2.datetimebar,
table3.user
FROM table1
LEFT OUTER JOIN table2
ON table1.id = table2.table1id
LEFT OUTER JOIN table3
ON table1.id = table3.id
UNION
SELECT
2 AS selection,
table1.id, table1.datetimefoo,
table2.datetimebar AS sort_date, -- alias on second table's date
table3.user
FROM table1
INNER JOIN table2
ON table1.id = table2.table1id
INNER JOIN table3
ON table1.id = table3.id
) AS T2
ORDER BY sort_date DESC
内容总结
以上是互联网集市为您收集整理的PHP-MySQL联合查询,按2个变量排序全部内容,希望文章能够帮你解决PHP-MySQL联合查询,按2个变量排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。