簡體   English   中英

MySQL SELECT和IF語句從另一個表設置變量

[英]MySQL SELECT with IF statement to set variable from another table

我想顯示基於某些選擇條件為真的Table1的所有結果,並基於對Table2的某些滿意條件,將Table1的每個結果的變量設置為0或1。

SELECT * FROM Table1 WHERE Some_Condition=true

Foreach Table1.Name
    SELECT IF(TID IS NULL, 0, 1) AS Variable FROM Table2 
    WHERE 
        Table2.Name=Table1.Name AND Table2.Val='p' 

如何將所有這些整合到一個SQL調用中?

我想看到的示例調用是:

表格1:

+----+-------------------+
| ID |        Name       |
+----+-------------------+
| 1  |        John       |
+----+-------------------+
| 2  |        Alan       |
+----+-------------------+

表2:所以這里Alan存在並且Val='p' ,而不僅僅是存在

+-------+-----------+-----+
|  TID  |    Name   | Val |
+-------+-----------+-----+
|   1   |    Alan   |  p  |
+-------+-----------+-----+

我想從SELECT語句獲得的SQL結果:

+------+----------+
| Name | Variable | 
+------+----------+
| John |     0    |
+------+----------+
| Alan |     1    |
+------+----------+

LEFT JOINCASE語句可能對您有用 請參閱下面的查詢。

SELECT A.Name AS item, (CASE WHEN B.Val='p' THEN 1 ELSE 0 END) AS Variable 
FROM Table1 A LEFT JOIN Table2 B ON (A.Name=B.Name)

我想您只想加入:

SELECT t2.Name, IF(Tt2.ID IS NULL, 0, 1) AS Variable
FROM Table2 t2 JOIN
     Table1 t1
     ON t2.Name = t1.Name
WHERE t2.Val = 'p' AND <some condition on t1> = true;

在MySQL中,您可以將SELECT簡化為:

SELECT t2.Name, (Tt2.ID IS NOT NULL) AS Variable

請注意,我將名稱添加到SELECT ,盡管該名稱不在示例SQL中。

即使Table2行不存在,您也需要LEFT JOIN Table2包括Table1所有行。 然后在“ Variable列中,僅檢查是否存在Table2.TID (即不為null)。

SELECT Name, (Table2.TID IS NOT NULL) AS Variable
FROM Table1
  LEFT JOIN Table2 ON Table2.Name=Table1.Name AND Table2.Val='p'

或者可以通過IF()來完成:

SELECT Name, IF(Table2.TID IS NULL, 0, 1) AS Variable
FROM Table1
  LEFT JOIN Table2 ON Table2.Name=Table1.Name AND Table2.Val='p'

暫無
暫無

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

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