我有一个表格,列出了位置和每个位置的可接受字段:
位置 可接受字段
---------------------------------------------- ------|
Location_A 地址
Location_A 电话
位置_A 营业时间
位置_B 地址
Location_B 电话
现在,我有一个表,其中列出了我要根据第一个表验证的值。
ID 位置 地址 电话 营业时间
---------------------------------------------- ------------------|
1 地点 A 123 Some St. 9999999 8-5
2 地点 B 456 Some St. 9999998 8-4
现在,地点 A 通过了营业时间验证,但是地点 B 列出了营业时间,但根据验证表,它不应该。这应该是 NULL。我希望我的查询返回位置 B,8-4。这里我的 MySQL 语句显然不起作用:
SELECT Table2.Location, Table2.Hours
FROM
Table1 LEFT OUTER JOIN Table2
ON
Table1.Location = Table2.Location
WHERE
Table2.Hours is not null
AND Table1.Acceptable_Fields != 'Hours';
最佳答案
这个怎么样?
SELECT Table1.Location, Table1.Acceptable_Fields
FROM Table1 RIGHT JOIN
(
SELECT Location, 'Address' AS col_name, Address AS col_val
FROM Table2
UNION ALL
SELECT Location, "Phone" AS col_name, Phone AS col_val
FROM Table2
UNION ALL
SELECT Location, "Hours" AS col_name, Hours AS col_val
FROM Table2
) T3 ON Table1.Location = Table3.Location
AND Table3.col_name = Table1.Acceptable_Fields
WHERE Table3.col_name IS NULL AND TAble3.col_val IS NOT NULL;
关于MySQL 左外连接验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402040/