開始用GROUP BY
查詢,讓你爲place
和date
每個組合的個性化......
SELECT v2.place, v2.date, COUNT(*) AS group_count
FROM demo AS v2
GROUP BY v2.place, v2.date
然後你可以使用它作爲你加入回demo
表的子查詢和您IIf
表達添加到頂級SELECT
條款等
SELECT
v.*, IIf(sub.group_count > 1, 'Si', 'No')
FROM
demo AS v
INNER JOIN
(
SELECT v2.place, v2.date, COUNT(*) AS group_count
FROM demo AS v2
GROUP BY v2.place, v2.date
) AS sub
ON v.place = sub.place AND v.date = sub.date;
關於業績,Y ou應該索引place
和date
字段。如果demo
表非常龐大,那麼這個查詢可能不會很快,但它應該比您的原始版本更快。
我建議你也用你想看的字段列表替換v.*
。 v.*
需要2個步驟:首先找到對應於v.*
的字段名;其次,檢索這些字段的數據。因此列出字段名稱消除了第一步。如果您只需要查看可用字段的一部分,按名稱列出它們意味着數據庫引擎檢索的數據較少。
也許你可以詳細說明你的PC如何處理查詢。你的意思是使用iif(而不是如果)?有趣的是將「Si」或「No」寫成布爾值,但不知道你可以改變這種語法。 – MathBio
只有一個條款重要嗎? 「Si」和「No」是退回的值,所以我不知道你的意思是什麼...無論如何,我刪除了如果只是使用計數退回的值,它仍然太難執行... 問題是不是我的電腦硬件,也許acces不能處理這個,但我不能改變它:( 你認爲有更好的方式來構建查詢? – Mituga
「演示」有多少記錄? - 你有沒有嘗試過查詢嚮導在Access中查找重複? – Andre