[英]Using "or" in my SQL query crashes MS Access 2019
這是我關於 Stack 的第一個問題。 我是一名學生,試圖通過實踐來發展我的查詢能力。 使用 Microsoft Access 和一些公開的人口普查數據(57,000 行的 5 個表),我遇到了以下問題。
當我嘗試在“where”語句中使用“or”而不是“and”時,會導致 Access 停止響應。 為什么會這樣?
例如,當我嘗試更改時:
not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 and not EDUCATION.INFANTS_PRIMARY_TOT_P = 0
對此:
not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 or not EDUCATION.INFANTS_PRIMARY_TOT_P = 0
甚至對此:
not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 or EDUCATION.INFANTS_PRIMARY_TOT_P = 0
它會導致崩潰。
這是因為我的語法錯誤嗎? 還是我誤解了 Sequel 中“或”子句的應用?
我沒有使用“或”的完整代碼如下。
(
select distinct top 10
CHILDREN.PK as top10Last10,
CHILDREN.TOTAL_TOTAL as children,
HOUSEHOLD.TOTAL_FAMHHOLD as familys,
FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM as undivorced,
MARRIAGE.P_TOT_MARRD_REG_MARRGE as officiated,
EDUCATION.INFANTS_PRIMARY_TOT_P as primaryKto6
from
CHILDREN,
HOUSEHOLD,
FAMILY,
MARRIAGE,
EDUCATION
where
CHILDREN.PK = HOUSEHOLD.PK and
CHILDREN.PK = FAMILY.PK and
CHILDREN.PK = MARRIAGE.PK and
CHILDREN.PK = EDUCATION.PK and
not CHILDREN.TOTAL_TOTAL = 0 and
not HOUSEHOLD.TOTAL_FAMHHOLD = 0 and
not FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM = 0 and
not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 and
not EDUCATION.INFANTS_PRIMARY_TOT_P = 0
order by
CHILDREN.TOTAL_TOTAL asc,
HOUSEHOLD.TOTAL_FAMHHOLD asc,
FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM asc,
MARRIAGE.P_TOT_MARRD_REG_MARRGE asc,
EDUCATION.INFANTS_PRIMARY_TOT_P asc
)
union all
(
select distinct top 10
CHILDREN.PK,
CHILDREN.TOTAL_TOTAL,
HOUSEHOLD.TOTAL_FAMHHOLD,
FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM,
MARRIAGE.P_TOT_MARRD_REG_MARRGE,
EDUCATION.INFANTS_PRIMARY_TOT_P
from
CHILDREN,
HOUSEHOLD,
FAMILY,
MARRIAGE,
EDUCATION
where
CHILDREN.PK = HOUSEHOLD.PK and
CHILDREN.PK = FAMILY.PK and
CHILDREN.PK = MARRIAGE.PK and
CHILDREN.PK = EDUCATION.PK and
not CHILDREN.TOTAL_TOTAL = 0 and
not HOUSEHOLD.TOTAL_FAMHHOLD = 0 and
not FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM = 0 and
not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 and
not EDUCATION.INFANTS_PRIMARY_TOT_P = 0
order by
CHILDREN.TOTAL_TOTAL desc,
HOUSEHOLD.TOTAL_FAMHHOLD desc,
FAMILY.INTCT_FAM_NO_OTR_CHLD_PRE_FAM desc,
MARRIAGE.P_TOT_MARRD_REG_MARRGE desc,
EDUCATION.INFANTS_PRIMARY_TOT_P desc
);
這個完整的代碼正在運行並返回我期望的表格。
提前感謝您的任何回復。
首先,不響應不是崩潰。
接下來,您可能需要更具體:
(not MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0) or (not EDUCATION.INFANTS_PRIMARY_TOT_P = 0)
或者:
not (MARRIAGE.P_TOT_MARRD_REG_MARRGE = 0 or EDUCATION.INFANTS_PRIMARY_TOT_P = 0)
此外,請確保您在這些字段上有索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.