簡體   English   中英

帶有雙選擇語句的嵌套 mysql 查詢?

[英]nested mysql query with double select statement?

我有一個關於嵌套查詢的簡單問題。 老實說,我不知道是否只能通過一個查詢來完成,或者我是否必須使用 PHP。

簡而言之,我想通過從關系表中的選擇語句返回的用戶 ID 返回用戶表中的用戶信息。

我可以通過 2 個查詢和一些 PHP 循環來做到這一點,但為了節省資源,但我認為最好將它組合成 1 個查詢和單個循環。

第一次查詢

SELECT UserID FROM relations WHERE GroupID = '1'

第二個查詢我需要通過從第一個 select 語句返回的 UsersID 從用戶表中檢索用戶信息。

我可以通過循環遍歷 ID 並進行查詢來做到這一點,但我認為我可以在 1 個查詢中獲得全部。

謝謝

這是執行此操作的典型方法:

SELECT     users.*
FROM       users
INNER JOIN relations
ON         users.id = relations.userid
WHERE      relations.groupid = 1

我注意到您在查詢中的 1 周圍使用了引號。 我假設 group id 是一個整數值,在這種情況下你不應該使用引號。

使用 IN 子查詢的答案可能性能較差。 特別是對於 MySQL,JOIN 應該始終是我們從表中組合結果的首選方式,因為 MySQL 的子查詢實現特別乏味。

Select * from user_table where id in(SELECT UserID FROM relations WHERE GroupID = '1')
                                   OR
Select * from user_table u INNER JOIN relations r ON u.UserID=r.UserID WHERE r.GroupID='1'
select * from user_typw 
where userID in (SELECT UserID FROM relations WHERE GroupID = '1')

試試這個

select * from user where UserID  in
(SELECT UserID FROM relations WHERE GroupID = '1')

或者

select * from user U where exists 
(SELECT * FROM relations R WHERE U.UserID=R.UserID and  R.GroupID = '1')

或者

select U.*
from user U join relations R 
on U.UserID=R.UserID 
where  R.GroupID = '1'
SELECT * FROM user_table ut LEFT JOIN relations r on ut.UserID=r.UserID where r.GroupID=1;

SELECT A.field1,B.field2 FROM table1 A LEFT JOIN table2 B ON A.common_ID=B.common_ID WHERE field = 'abc'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM