簡體   English   中英

檢查表mysql查詢中可用的所有id值列表

[英]check all the list of id value available in table mysql query

id | catid | productid | 

1     3        100

2     244      110

3     400       300   

嗨,這是我的查詢,

select catid from table where catid NOT IN ('3','244','5')

我有一張上面的桌子,

1-我需要什么,我必須檢查一些catid值列表,如果所有list catid都可用,則表將返回“ yes”或“ rows”。

2-否則將返回“否”所有列表catid不可用?

我試過了但是沒用?

這對我的預期結果不正確嗎?

從表中選擇catid,IF(catid IS NOT NULL,“ Yes”,“ No”)from catid IN('3','244','5');

我需要的是,cat id的列表是“(''3','244','5')”,如果一旦缺少該表的值將返回“否”,則該表應該可用

謝謝你的幫助 ?

您可以分多個步驟進行

例如:您需要檢查的實際表

SELECT * FROM emp_old;
+--------+-------+
| emp_no | name  |
+--------+-------+
|      1 | abdul |
|      2 | Jp    |
|      3 | Ankur |
+--------+-------+
3 rows in set (0.00 sec)

將您的ID插入新表中,您將檢查或傳入IN或NOT IN

DROP TABLE IF EXISTS InsertIds;

CREATE TABLE InsertIds(Id INT);

INSERT INTO InsertIds VALUES(1),(2),(3),(4);

SELECT * FROM InsertIds;
+------+
| Id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

現在嘗試這個

SELECT Id , IF(emp_no IS NOT NULL , "Yes" , "No") AS "Check status" FROM InsertIds a LEFT JOIN emp_old b ON a.Id = b.emp_no ;
+------+--------------+
| Id   | Check status |
+------+--------------+
|    1 | Yes          |
|    2 | Yes          |
|    3 | Yes          |
|    4 | No           |
+------+--------------+
4 rows in set (0.00 sec)

解決此問題的一種方法是使用left outer join和聚合:

select (case when count(distinct t.catid) = 3 then 'Yes'
             else concat('No, missing ',
                         group_concat(case when t.catid is null then vals.val end)
                        )
        end)
from (select '3' as val union all '244' union all '5'
     ) vals left outer join
     t
     on t.catid = vals.val;

列表本身作為一組行在第一個子查詢中運行,每行一個值。

我認為這里最簡單的解決方案是MySQL和PHP的組合:

假設您的catid值列表不包含重復項:

第1步 -使用PHP獲取列表中所有元素的數量

第2步 -使用MySQL獲取列表中所有元素的不同數量:

select count(distinct catid) from table where catid IN ('3','244','5');

步驟3使用PHP將步驟1中的計數與步驟2中的計數進行比較。如果它們相等,則為“是”,否則為“否”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM