我是 Web 編程和 SQL 的初學者。我不習慣使用具有多對多關系的表,由于缺乏知識,我在這里面臨一個問題。
這些是我的表,這就是我想要做的:
表用戶
ID | Users
-----------------
1 | John
2 | Mark
3 | Sophia
表專案
ID | Projects
-----------------
1 | Generic Name no 1
2 | Generic Name no 2
3 | Generic Name no 3
表 users_projects
UsersID | ProjectsID
-----------------
1 | 1
2 | 1
2 | 2
3 | 2
3 | 3
我想選擇所有用戶,假設 Projects.Id 值為 1,同時保持這兩個表之間的多對多關系。我怎么做?
期望輸出
ID | Users
-----------------
1 | John
2 | Mark
uj5u.com熱心網友回復:
SELECT t1.*
FROM users t1
JOIN users_projects t2 ON t1.id = t2.usersid
或者
SELECT *
FROM users t1
WHERE EXISTS ( SELECT NULL
FROM users_projects t2
WHERE t1.id = t2.usersid )
我建議您重命名 和 中的ID列,users并為projects它們分配與users_projects. 這將消除歧義,并使您的結構和查詢更加清晰。
uj5u.com熱心網友回復:
如果你想要Projects.Id value is 1嘗試的結果:
select u.ID,u.Users
from users u
inner join users_projects p on u.ID=p.UsersID
where p.ProjectsID=1;
CREATE TABLE users (
ID int,
Users varchar(10) );
INSERT INTO users VALUES
(1,'John'),
(2,'Mark'),
(3,'Sophia');
CREATE TABLE users_projects (
UsersID int,
ProjectsID int );
INSERT INTO users_projects VALUES
(1,1),
(2,1),
(2,2),
(3,2),
(3,3);
結果:
ID Users
1 John
2 Mark
演示:https : //dbfiddle.uk/?rdbms=mysql_8.0&fiddle=463a1cfac69f07d41a2caa440decdb25
uj5u.com熱心網友回復:
您可以在下面嘗試,通過使用左連接指定要加入的欄位。您可以使用表別名并使用別名為欄位添加前綴,以指示欄位鏈接在哪個表之間。
select u.Users, u.ID, p.Projects, p.ID
from Users u
left join user_project up
on u.ID = up.UsersID
left join projects p
on up.ProjectsID = p.projects
order by u.Users, p.Projects
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383444.html
上一篇:MySQL啟動失敗:innodb-default-row-format=dynamic
下一篇:MYSQL資料庫中按字串日期排序
