我想显示基于某个选择条件为true的表1中的所有结果,并根据表2的某个满足条件将表1中的每个结果设置一个变量为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 |
+------+----------+
左联接和大小写语句可能适用于您。请参阅下面的查询。
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中。