我有一個表(我們可以稱它爲「A」),其中有一些字段(型號:字符串,年齡:整數,code1:整數,code2:整數,code3:整數)和用分類代碼(代碼:整數,代碼類型:字符串,描述:字符串)的另一個表(它可以是「代碼」)。Semijoin表達式必須是邏輯的一部分AND
該字段代碼類型是爲了組代碼。例如,200到300之間的代碼是棕色的。每個項目最多可以有3個代碼。
現在,我只是想簡單,簡單的查詢:
SELECT model,age FROM dataset.A
WHERE code1 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
和它的作品,但事實上,還有另外兩個人。所以,如果我這樣做:
SELECT model,age FROM dataset.A
WHERE code1 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
OR code2 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
OR code3 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
它不工作,我得到這個錯誤信息:
Error: (xx:yy): Semijoin expression (i.e. "x IN (SELECT ...)") must be a part of logical AND.
我相信谷歌應該有辦法做到這一點。
順便說一句,我正在開發的項目不是用「A」和「代碼」。我真的需要一個解決方案。感謝任何幫助。
我真的很感謝你的回答。情況是,這是虛擬用戶的查詢生成器。這種變化意味着一個大的變化。你有沒有想過在這種限制的方式上是否有解決方案? – norgematos