回答
SQL不支持這樣的支持數組,所以我不完全確定如何你正在存儲你的數組數組,並且這將影響回答這個問題的最佳方式。
這麼說,我應該這樣做:
SELECT u.id
FROM Users U
RIGHT JOIN Numbers N
ON U.id=N.Number
WHERE N.Number IN (2,3,6)
這是基本的查詢;來自那裏的確切細節取決於你將如何檢測失敗。 u.ID爲NULL的任何記錄都表明它不是子集。如果不立即實際所需的一組ID的,你可以將它修改爲
SELECT COUNT(*) AS Missing
FROM Users U
RIGHT JOIN Numbers N
ON U.id=N.Number
WHERE N.Number IN (2,3,6)
AND u.id IS NULL
,並在任何缺少的是> 0,你就知道你沒有一個子集。 (在SQL Server中,至少可以將int轉換爲一點來獲得0 = false,如果應用程序更易於使用,則0 = true。)
其他詳細信息我們可以添加更多關於什麼的信息你實際上正在努力,但希望這是一個基本的技術是有道理的。
(NB這一切假設你已經在你的數據庫有一個數字/理貨表。他們是非常有用的話,如果你有沒有準備好,我會得到一個成立。)
使用Dynamic SQL:
declare @cmd varchar(200)
select @cmd = "select id from Users WHERE id in (" + @array + ")"
exec(@cmd)
不,不是'IN'子句,您的查詢正在做另一種方式,使選定的ID將從數組限制。 – 2012-01-10 13:55:29
你想檢查2,3,6是否都在表中?或者他們按照這個順序出現?究竟是什麼? – 2012-01-10 13:57:58
如果你想檢查這個列表是否是一個確定的子集,那麼你還需要計算數組中元素的數量,並將其與此操作中返回集的長度進行比較。 – eftpotrm 2012-01-10 15:32:24
你必須逐個檢查每個記錄/項目,再算上他們。
如果JOIN的大小與數組大小相同,則該數組是該表的子集。
這裏是假設你的數組中的一個表的例子...
SELECT
COUNT(*)
FROM
Users
INNER JOIN
search
ON search.id = Users.id
HAVING
COUNT(*) = (SELECT COUNT(*) FROM search)
如果你能填充一個欄表格,你需要再次進行測試,那麼你可以做到這一點的值。
Select count(*)
From
(
Select id
From users
Intersect
Select id
From testValues
) test
如果count等於您正在測試的值的數量,則該數組將形成子集。
當然這假定您正在使用帶相交的SQL變體。德姆的解決方案應該無處不在。 – 2012-01-10 14:10:48
- 1. 一個數組的mongodb查詢子集
- 2. 檢查數組是否是其他數組的子集。 Java
- 3. 檢查如果一個數組是另一個數組的一個子集(但檢查對一個屬性)
- 4. PHP檢查數組值是否唯一
- 5. 檢查的值是一個查詢
- 6. 檢查數組的鍵是否存在另一個數組值
- 7. 檢查一個值是否是一個多維數組
- 8. 檢查一個數組的值是否在另一個
- 9. 如何檢查一個數組是否是另一個數組的子序列?
- 10. 如何檢查子集數組是否包含超集數組之一?
- 11. 如何檢查一個數組的值是否是另一個數組的鍵?
- 12. 檢查的值是到一個數組
- 13. angularjs檢查數組值是否在另一個數組中
- 14. 檢查一個值是否小於數組的任何值
- 15. 檢查一個數組是否排序
- 16. 如何檢查一個查詢是否存在多個值
- 17. 檢查數組值是否爲數字
- 18. 檢查字典是否是另一個字典的子集
- 19. 檢查Python數組是否只包含一組數字集
- 20. 檢查一個值是不是在查詢的另一個表
- 21. 檢查一個集合中的值是否在python的numpy數組中
- 22. 可以檢查一個集合或子集合是否存在?
- 23. 檢查數組中的對象是否是另一個數組
- 24. 檢查數組中是否有一個數組是空的
- 25. 檢查一個數組是否是另一個數組的一個整數
- 26. 檢查是否在數組值大於一個數量
- 27. 檢查是否一個數組包含(僅)數值
- 28. 如何檢查數組參數是否包含一個值
- 29. 如何檢查值是否存在一個數組中的Jquery
- 30. 檢查一個數組是否具有不同於零的值
可能[SQL選擇所有存在子集的行](http://stackoverflow.com/questions/8425232/sql-select-all-rows-where-subset-exists) – onedaywhen 2012-01-10 14:13:24