$query1 = "SELECT id, ac, aa FROM tbl_ac WHERE ac = ? AND aa = ?";
并且
$query2 = "SELECT id, cc FROM tbl_cc WHERE cc = ?";
这两个查询有什么等价的单一查询语句吗?由于每个表之间没有任何关联,因此无法使用INNER JOIN。我只是想验证数据库中是否存在ac、aa和cc。
$query1 = "SELECT id, ac, aa FROM tbl_ac WHERE ac = ? AND aa = ?";
并且
$query2 = "SELECT id, cc FROM tbl_cc WHERE cc = ?";
代码示例:
SELECT id, ac, aa, NULL as cc FROM tbl_ac WHERE ac = ? AND aa = ?
UNION ALL
SELECT id, NULL, NULL, cc FROM tbl_cc WHERE cc = ?
但我不建议这样做。
如果查询之间没有任何联系,那么您应该执行这两个查询。
http://sqlfiddle.com/#!3/779da/1
您还可以这样做:
select *
from tbl_ac, tbl_cc
where ac = 1 AND aa = 1 AND cc = 1
SELECT id, ac, aa FROM tbl_ac WHERE ac = ? AND aa = ?
AND EXISTS(SELECT id, cc FROM tbl_cc WHERE cc = ?)
$query = "
SELECT tbl_ac.id, tbl_ac.ac, tbl_ac.aa
FROM tbl_ac
LEFT JOIN tbl_cc ON ( tbl_cc.cc = tbl_ac.ac )
";
SELECT EXISTS (SELECT * FROM tbl_ac WHERE ac = ? AND aa = ?)
AND EXISTS (SELECT * FROM tbl_cc WHERE cc = ?)
如果两个EXISTS
谓词都返回TRUE,则返回TRUE,否则返回FALSE。请注意,在EXISTS
子查询中不需要指定列。 EXISTS
谓词仅测试行的存在性。