簡體   English   中英

mysql從id中選擇所有具有相同值的行

[英]mysql select all rows that have same value from id

我有這樣的SQL表

id|server_name|other|data|
__|___________|_____|____
1|server1     |data |data
2|server1     |data |data
3|server2     |data |data
4|server3     |data |data

我試圖找到一個可以給它提供ID的select語句,它將返回與我指定的ID具有相同server_name的所有行。

所以我選擇id = 2,我將從id 1和2獲得行。

我試過了,但它只是返回了所有內容。

SELECT * FROM `backups` WHERE EXISTS(SELECT `server_name` FROM `backups` WHERE `id` = 2);

任何幫助表示贊賞。

SELECT *
FROM backups
WHERE server_name = (SELECT server_name
                     FROM backups
                     WHERE id = 2)

要么

SELECT b1.*
FROM backups AS b1
JOIN backups AS b2 ON b1.server_name = b2.server_name
WHERE b2.id = 2

你近了 只需使用=將每一行的server_name與子查詢返回的值進行比較:

SELECT * FROM backups
WHERE server_name = (
  SELECT server_name
  FROM backups
  WHERE id = 2)

您也可以通過聯接來實現:

SELECT b2.*
FROM backups b1
JOIN backups b2 ON b2.server_name = b1.server_name
WHERE b1.id = 2

無論哪種方式, server_name上的索引都將有助於提高性能。

暫無
暫無

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

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