![](/img/trans.png)
[英]How can i update the Records included in another query using SUM and GROUP By in mysql
[英]mysql - check if a group of elements are included in another group
我有以下設置:
像這樣的PHP數組:
$arr = array(1, 2, 3, 4);
一個如下所示的查詢:
SELECT `epicThing` FROM `epicTable` AS `epic`
WHERE
SELECT `ids` FROM `someTable`
WHERE `epic`.`somethingSomething` = `someTable`.`somethingElse`
(<<<< HERE IS MY PROBLEM >>>>)
子查詢返回類似(1,2,3,4,5,6,7,8,9)的內容。
現在我需要檢查的是數組中的每個元素都在子查詢的返回答案中。
基本上就像是
SELECT `epicThing` FROM `epicTable` AS `epic`
WHERE
'1' IN (
SELECT `ids` FROM `someTable`
WHERE `epic`.`somethingSomething` = `someTable`.`somethingElse`
)
AND
'2' IN (
SELECT `ids` FROM `someTable`
WHERE `epic`.`somethingSomething` = `someTable`.`somethingElse`
)
AND
'3' IN (
SELECT `ids` FROM `someTable`
WHERE `epic`.`somethingSomething` = `someTable`.`somethingElse`
).......
但對於每個元素。
為簡單起見,我們假設元素總是按順序排列(因為我可能需要將數組轉換為字符串),否則就不可能。 但如果可以的話,我更喜歡一般的解決方案。
我不想做的是在php中獲取數據並在那里檢查(這只是一個非常小的一個巨大的查詢部分)。
如果我正確理解您的問題,我認為這將是您測試數組中所有ID與數據庫中記錄匹配的最簡單方法:
<?php
$myArray = array(1,2,3);
$myArrayCount = count($myArray);
// Convert array for the query
$queryArray = implode(",", $myArray);
SELECT COUNT(DISTINCT(YourTable.id)) AS count
FROM YourTable
WHERE YourTable.id IN ($queryArray)
HAVING count = $myArrayCount;
?>
如果HAVING count = $ myArrayCount, Mysql將返回空結果; 與您要檢查的ID數量不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.