php - 在 UNION 中选择列

标签 php sql mysql union

$queryActivities = mysql_query("
SELECT ua.status, ua.date, 'status' AS is_table FROM users_statuslog ua
   WHERE ua.uid = '{$showU[id]}'
UNION ALL 
SELECT us.message, us.date 'wall' FROM users_wall us 
   WHERE us.uid = '{$showU[id]}'
ORDER BY `date` DESC");

这就是我现在所拥有的。我需要 users_wall 中的更多列,比我在 users_statuslog 中需要的更多。我该如何选择它们?因为我不能这样做:

(假设我还想要 isReplyFrom 并从 users_wall 查看)

$queryActivities = mysql_query("
SELECT ua.status, ua.date, 'status' AS is_table FROM users_statuslog ua
   WHERE ua.uid = '{$showU[id]}'
UNION ALL 
SELECT us.message, us.date, us.isReplyFrom, us.viewed 'wall' FROM users_wall us 
   WHERE us.uid = '{$showU[id]}'
ORDER BY `date` DESC");

我得到:

使用的 SELECT 语句具有不同的列数。

最佳答案

如消息所述,您有两个列数不同的选择。
联合会将您第一次选择的结果“连接”到第二次选择,但如果列数不同,它就无法工作。

要么找到一种方法来获得相同数量的列,要么在请求中添加虚拟列:

SELECT ua.status, ua.date, 'dummy' AS replyFrom, 'dummy' AS viewed, 'status' AS is_table FROM users_statuslog ua
    WHERE ua.uid = '{$showU[id]}'
UNION ALL
SELECT us.message, us.date, us.isReplyFrom, us.viewed, 'wall' FROM users_wall us 
    WHERE us.uid = '{$showU[id]}'
ORDER BY `date` DESC

资源:

关于php - 在 UNION 中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747013/

相关文章:

php - laravel 两个表的多个条件查询

php - 计算两个日期的剩余时间百分比

php - shell_exec() 如何选择使用哪个 shell?

SQL STUFF() 函数不断转义我的 HTML

SQL 时态表 : It is possible to change logging time from UTC to current time?

mysql - 在 Joomla 3.2 中编辑文章 SQL 错误

php - 回显名称而不是数据库中的值

mysql - 检查日期范围时最快的结果

php - 如何从laravel集合中获取特定的数据片段?

php - Mysql 多个 LIKE 与 "AND"