两表合一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;
输出:-
我有两个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;
输出:-