這是我關于 Stack 的第一個問題。我是一名學生,試圖通過實踐來發展我的查詢能力。使用 Microsoft Access 和一些公開的人口普查資料(5 個 57,000 行的表),我遇到了以下問題。
當我嘗試在“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
);
這個完整的代碼正在運行并回傳我期望的表格。
提前感謝您的任何回復。
uj5u.com熱心網友回復:
首先,不回應不是崩潰。
接下來,您可能需要更具體:
(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)
此外,請確保您在這些欄位上有索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482474.html
