我正在学习mysql,所以我对此很新,试图在其他地方找到解决方案,但也无法解决。
我有2个表,import_staff和import_student。
我有一个表单,允许用户按姓名搜索员工用户或学生用户。
我可以通过这样的表搜索我的查询:
SELECT * FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10
但我希望查询能够在两个表中进行搜索..不确定如何开始。任何想法都表示赞赏。感谢。
BTW-使用PHP。
答案 0 :(得分:1)
您可以使用UNION:
执行此操作SELECT id, stafffirstname AS name1, stafflastname AS name2 FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10
UNION ALL
SELECT id, studentfirstname AS name1, studentlastname AS name2 FROM import_student WHERE CONCAT(studentfirstname,space(1),studentlastname) LIKE '%$queryString%' LIMIT 10
答案 1 :(得分:0)
你也可以加入
SELECT *
FROM import_staff
INNER JOIN import_student
ON 1 = 1
答案 2 :(得分:0)
SELECT t1.stafffirstname, t1.stafflastname, t2.studentfirstname, t2.studentlastname,
FROM import_staff t1, import_student t2
WHERE CONCAT(t1.stafffirstname,space(1),t2.stafflastname) LIKE '%$queryString%' LIMIT 10
这可能适合你。
答案 3 :(得分:0)
select * from (
select id, stafffirstname as firstname, stafflastname as lastname from import_staff
union
select id, studentfirstname as firstname, studentlastname as lastname from import_student) t
where concat_ws(' ',firstname,lastname) like '%term%'
在您的表定义中,您应该只使用姓氏,而不是studentlastname等。表名称import_staff和import_student已经提供了命名空间。