[英]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 JOIN和CASE語句可能對您有用 。 請參閱下面的查詢。
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.