因此,爲了澄清上面的一些評論,這裏的問題是你沒有(或沒有在上面指定)一種識別值的方法。您以70和1223爲例,但如果您向我們提供了所有數字的列表,我們如何才能確定哪些數字一起出現?你可能會說「化學專業知識」,但這是基於化合物名稱的另一列,對吧?所以真的,你的查詢應該使用該列。但是,如何連接相關名稱仍然存在問題(例如,「全鐵」和「亞鐵」可能是因爲它們都有「鐵」字,但「高錳酸鹽」和「錳」是什麼?)。簡而言之,您需要另一列來指定這些單獨行之間的共同事物,無論是元素,離子,電荷等。您還需要一列標識每個「組」中您希望包含在查詢中的哪一行(或者,排除哪些)。例如:
+----------+-----------------+---------+---------+
| KEY_ANLT | Compound | Element | Primary |
+----------+-----------------+---------+---------+
| 70 | total iron | Fe | Y |
| 1223 | ferrous iron | Fe | |
| 1224 | ferric iron | Fe | |
| 900 | total manganese | Mn | Y |
| 901 | permanganate | Mn | |
+----------+-----------------+---------+---------+
然後,爲了獲得一個查詢,顯示只是「初級」行,這是很簡單的:
SELECT * FROM Table1 WHERE Primary='Y';
如果沒有[主]列,你必須決定如何選擇每一行。也許你會想要最小的KEY_ANLT?
SELECT Table1.*
FROM
(SELECT Element, min(KEY_ANLT) AS MinKey FROM Table1 GROUP BY Element) AS Subquery
INNER JOIN Table1 ON
Subquery.Element=Table1.Element AND
Subquery.MinKey=Table1.KEY_ANLT
您的查詢不起作用的原因是WHERE子句按行操作,並且不會將不同的行相互比較。因此,在你的SQL:
IIf([Table1].[KEY_ANLT]=1223 And [Table1].[KEY_ANLT]=70,70,1223)
行沒有將評估這是70,因爲沒有單列具有KEY_ANLT = 1223 AND KEY_ANLT = 70。每行只有一個KEY_ANLT值。那麼對於每一行,IIF表達式的計算結果爲1223,並且您的條件將只返回KEY_ANLT = 1223(化合物B)的行。
最好是發佈示例SQL。 – Fionnuala
或一些樣本數據 – marlan
此外,您似乎可能有一個不符合正常標準的表格設計。 – Fionnuala