2013-07-10 148 views
0

數據的所有領域,我不知道足夠知道如何尋找這個所以我就扔在那裏:MySQL的:基於在特定領域

| Field 1 | Field 2 | Field 3 | 
+=========+=========+=========+ 
| 001 | a | xxx | 
| 002 | c | xxx | 
| 003 | b | xxx | 
| 001 | b | xxx | 
| 001 | c | xxx | 
| 002 | b | xxx | 
+=========+=========+=========+ 

我需要檢查Field 2主要。如果Field 2曾經等於「a」,那麼我需要從該行中獲取Field 1條目,然後選擇共享該特定條目的所有行。

我真的不知道如何把它變成文字,但基於表的示例輸出上面會:

| Field 1 | Field 2 | Field 3 | 
+=========+=========+=========+ 
| 001 | a | xxx | 
| 001 | b | xxx | 
| 001 | c | xxx | 
+=========+=========+=========+ 

回答

1

使用子查詢:

SELECT * 
FROM yourtable 
WHERE yourtable.Field1 IN (
    SELECT DISTINCT Field1 
    FROM yourtable 
    WHERE Field2 = 'a' 
) AS childquery 

子查詢得到所有Field1記錄Field2是A的位置,然後外部查詢獲取具有匹配的Field1的所有記錄。

+0

我不明白'AS childquery'一部分,但是這正是我一直在尋找。謝謝! – Styles2304

+0

在這種情況下,'AS childquery'部分是不必要的 –

+0

,是的,不需要。自從我進行子查詢以來,我就習慣性地將它放在了一邊。 –

2

你想加入你自己的表格。

SELECT t1.field1, t1.field2, t1.field3 
FROM table1 t1 
    INNER JOIN table1 t2 ON t1.field1 = t2.field1 
WHERE t2.field2 = 'a' 

這拉,在域2有a的所有記錄,並拉你在你的例子顯示的列。

SQL Fiddle

0

你可以通過簡單的IN查詢做到這一點:

SELECT * 
FROM TABLE1 AS A 
WHERE FIELD1 IN 
(
SELECT FIELD1 
FROM TABLE1 
WHERE FIELD2 = 'a' 
) 

SQLFIDDLE