查找ID的存在和存在

时间:2011-11-15 19:46:22

标签: mysql

我正在尝试编写一个查询,该查询结合查找将status列设置为CONFIRMED的特定记录(由主键标识),但也可以查找表中是否存在该主键一点都不这就是我试过的:

SELECT 
count(`p2`.`id`) AS `confirmed`,
count(`p1`.`id`) AS `exists`
FROM `foos` `p2`, `foos` p1`
WHERE
`p2`.`id` = 28 AND 
`p2`.`status` = 'CONFIRMED' AND
`p1`.`id` = 28

同样,我正在尝试查找foo是否存在id = 28status = 'CONFIRMED',但我也想知道该ID是否不存在或是否存在存在,但status不是confirmed。 MySQL说这个查询附近存在问题

`p2`.`id` = 28 AND 
`p2`.`status` = 'CONFIRMED'

这个查询是否可行?

2 个答案:

答案 0 :(得分:3)

我会这样解决:

SELECT COUNT(a1.id) AS EXISTS, 
       IF(status = 'CONFIRMED', 1, 0) AS confirmed 
FROM   foo f1 
       LEFT JOIN foo f2 
         ON f1.id = f2.id 
WHERE  f1.id = 28

答案 1 :(得分:1)

如果您不介意使用子查询,这将是一个解决方案:

SELECT count(p1.id) AS 'confirmed', 
  (SELECT count(p2.id) 
  FROM foos p2
  WHERE p2.id = 28) AS 'exists'
FROM foos p1 
WHERE p1.id = 28 AND p2.status = 'CONFIRMED';