mysql - 在两个不同的列中搜索相同的数据

标签 mysql sql

嘿这是我的数据库

 users table                               pages table

|user_firstname|                           |page_firstname |
-----------------------------              --------------------------------
|  john    |                               |  matt    | 
|  james   |                               |  quentin | 
|  harry   |                               |  roland  |   
|  oliver  |                               |  thomas  | 

这是我对搜索应用程序的查询

SELECT user_id,   
       user_firstname, 
       user_lastname,
       user_profile_picture 
FROM users 
WHERE user_firstname LIKE :user_firstname
OR user_lastname LIKE :user_lastname

它适用于用户表。但是我也想从页面列中搜索。例如,当我按字母 M 时,它会找到 jaMes,但我也想要 Matt 和 thomas。问题是,如果我键入 Q,它应该只能从页面中找到 Quentin,如果我键入 J,它应该只能从用户中找到。 如何在此查询中包含页面表?

更新我试过这个查询

SELECT user_id, 
       user_firstname, 
       user_lastname, 
       user_profile_picture 
FROM users 
WHERE user_firstname LIKE :user_firstname 
OR user_lastname LIKE :user_lastname 
UNION ALL SELECT page_id, 
                 page_firstname,  
                 page_lastname,  
                 page_profile_picture 
FROM pages 
WHERE page_firstname LIKE :page_firstname 
OR page_lastname LIKE :page_lastname

我的结果是这样的:

array (size=4)
  'user_id' => int 5
  'user_firstname' => string 'Roland' (length=3)
  'user_lastname' => string 'lastname' (length=7)
  'user_profile_picture' => string '5_1399841223_536fe1c70ea2b_user_profile.jpg' (length=43)

即使 roland 在 PAGES 表中,我得到的结果也与在 users 表中一样。我想将它们彼此分开

最佳答案

你可以这样做:

SELECT user_id,
 user_firstname,
 user_lastname,
 user_profile_picture, 'users' as 'type'
FROM users 
WHERE user_firstname LIKE :user_firstname
OR user_lastname LIKE :user_lastname 
UNION ALL SELECT page_id, 
 page_firstname, 
 page_lastname, 
 page_profile_picture ,'pages' as 'type'
FROM pages 
WHERE page_firstname LIKE :page_firstname 
OR page_lastname LIKE :page_lastname

关于mysql - 在两个不同的列中搜索相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195808/

相关文章:

php - 卡在wampserver : it is in yellow mode

java - Alter Session 在 MyBatis 中设置日期格式

c# - 数据库关系记录归档和恢复

mysql - 通过 SQL 查询重新配置行中的表列数据

mysql 在 LEFT JOIN 条件下从别名结果中选择数据

mysql - 使用 ENDSSH heredoc 为 SSH MySQL 登录创建别名

mysql - 数据库最佳规范化

MySQL 外键不会导致子表填充

来自查询的 SQL 数据透视表

sql - 如何在 Postgres 事务中的下一个查询中使用查询结果?