两表合一SQL,查询

two tables in one SQL, query

我有两个table

 ID_USER | USERNAME
   1       Max
   2       Jean
   3       Carl
   4       Sophie

ID_MONEY | ID_USER | MONEY
  1           4      1000
  2           2      1500
  3           3      1250
  4           1      920

我想执行第二个 table SQL 并按用户名(按字母顺序)对结果进行排序,以便得到:

Carl have: 1250$
Jean have: 1500$
Max  have: 920$
Sophie have: 1000$

我应该执行什么类型的查询? 我试过了,

SELECT * 
FROM $table_users 
WHERE id_user='$id_user' 
ORDER BY (SELECT username FROM $table_money WHERE id_user='$id_user') ASC 

但不是预期的结果。

您需要 INNER JOIN。这可以使用连接或 WHERE 子句来完成。

SELECT USERNAME, MONEY
FROM $table_users
JOIN $table_money USING (ID_USER)
ORDER BY USERNAME

SELECT USERNAME, MONEY
FROM $table_users, $table_money
WHERE $table_users.ID_USER = $table_money.ID_USER
ORDER BY USERNAME

我想 table_money 可能对同一个用户有多个金钱价值,你会想要总计。

SELECT table_users.ID_USER, table_users.USERNAME, SUM(table_money.MONEY)
FROM table_users  INNER JOIN table_money ON table_users.ID_USER = table_money.ID_USER
GROUP BY table_users.ID_USER, table_users.USERNAME
ORDER BY table_users.USERNAME

在这里,我使用连接函数来连接字符串。

select CONCAT(tu.username,' have: ',tm.money,'$') as RESULT
from [$table_users] as tu
inner join [$table_money] as tm
on tu.ID_USER = tm.ID_USER
order by RESULT ASC;

输出:-