php - 如何在mysql中联合的两个部分中使用where条件
问题描述
我正在使用 php 和 mysql 来制作聊天应用程序。我想在联合的两个部分都使用 where 条件,但这不起作用我的代码是:
$Query = "(SELECT u.userid, u.photo, u.username FROM `last_activity` AS la INNER JOIN user AS u ON la.userid = u.userid LEFT join private_chat pc ON u.userid = pc.sender_id WHERE la.last_activity_date BETWEEN '2020-09-21 10:20:00' AND '2020-09-21 10:30:00' AND u.username like '%amit%' ORDER BY pc.created_date DESC) UNION (SELECT userid, photo, username FROM user u LEFT join private_chat pc ON u.userid = pc.sender_id WHERE u.u_type = '2')";
我想要喜欢,但这不起作用
$Query = "(SELECT u.userid, u.photo, u.username FROM `last_activity` AS la INNER JOIN user AS u ON la.userid = u.userid LEFT join private_chat pc ON u.userid = pc.sender_id) UNION (SELECT userid, photo, username FROM user u LEFT join private_chat pc ON u.userid = pc.sender_id ) WHERE la.last_activity_date BETWEEN '2020-09-21 10:20:00' AND '2020-09-21 10:30:00' AND u.u_type = '2' AND u.username like '%amit%' ORDER BY pc.created_date DESC";
解决方案
SELECT *
FROM
(
SELECT u.userid, u.photo, u.username, pc.created_date
FROM `last_activity` AS la
INNER JOIN `user` AS u ON la.userid = u.userid
LEFT JOIN private_chat pc ON u.userid = pc.sender_id
WHERE la.last_activity_date BETWEEN '2020-09-21 10:20:00' AND '2020-09-21 10:30:00'
AND u.username LIKE '%amit%'
UNION ALL
SELECT userid, photo, username, pc.created_date
FROM `user` u
LEFT JOIN private_chat pc ON u.userid = pc.sender_id
WHERE u.u_type = '2'
) a
ORDER BY a.created_date DESC;
推荐阅读
- android - API <24 上的 Android 网络安全
- java - openapi-generator gradle 插件输出目录
- javascript - Angular JS 自定义事件处理
- hyper-v - Hyper-V 访问被拒绝,即使作为 Hyper-V 主机上的管理员也是如此
- powershell - 大文件的 UTF-8 BOM 到 UTF-8 转换
- azure - Azure App注册中的身份验证密钥?
- typescript - 如何根据 Typescript 中的参数控制返回类型?
- amazon-web-services - 如何将访问令牌与 AWS 开发工具包一起使用?
- c# - C# Selenium 无法正确断言
- c - 使用 sprintf 将 unsigned long 转换为 char 数组,产生 0