mysql 双表多个外建怎么查询,让id显示出对应的名字,效果显示图4那样子
select t.title,t.BeginTime,e1.Name,e2.Name,t.priority from t_task t inner join t_employee e1 on t.TaskSenderId= e1.id inner join t_employee e2 on t.TaskReceiverID=e2.id
不知道你这个问题是否已经解决, 如果还没有解决的话:这里我们继续添加数据,便会发现数据,并不会按照5007继续排序
Jack的stuno是5010,并不是从5007开始排序
代码如下:
insert into studentinfo(stusex,stuname) values(0,"Jack");
针对问题,可以采用以下查询语句进行优化:
SELECT t1.id, t1.title, t2.name AS 'author', t3.name AS 'category' FROM books t1 LEFT JOIN authors t2 ON t1.author_id = t2.id LEFT JOIN categories t3 ON t1.category_id = t3.id;
其中,books为主表,authors和categories为从表,通过LEFT JOIN进行关联查询。用t1, t2, t3代表不同的表,id,title,author_id,category_id为对应字段。
如果需要显示对应的名字,可以将名字字段加入查询,并在SELECT语句中起别名,如t2.name AS 'author',t3.name AS 'category'。
如果是外键关联查询,需要确保每个表要设置一个主键ID,否则可以使用GROUP_CONCAT()函数进行查重,语法如下:
SELECT address, GROUP_CONCAT(DISTINCT username) AS '姓名' FROM USER GROUP BY username;
至于表结构优化方面,可以从以下几个方面考虑:
以上建议只是提供了一些优化方向,具体实现可以根据具体情况进行调整。