SQL中的“AND”和“OR”语句

时间:2016-07-14 22:51:19

标签: sql postgresql

所以我正在尝试运行具有倍数ANDOR s的查询。这是查询:

SELECT
COUNT(DISTINCT t.id)
FROM tags t
WHERE t.description LIKE '%Name%'
AND t.description LIKE '%On-boarding%'
OR t.description LIKE '%Pending Approval Inventory%'
AND t.title = 'follow-up'
AND t.created_at >= now() ::date;

我今天只想要唱片。问题是来自其他日期的记录!=今天也包含在计数中。我无法弄清楚如何调试此查询...非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

我想你想要这个:

SELECT
COUNT(DISTINCT t.id)
FROM tags t
WHERE ((t.description LIKE '%Name%'
AND t.description LIKE '%On-boarding%')
OR t.description LIKE '%Pending Approval Inventory%')
AND t.title = 'follow-up'
AND date_trunc('day', t.created_at) = date_trunc('day', now());

我还在描述过滤器周围添加了括号。我猜您想要一起申请名称和登机,或者是待批准库存。

但这里真正的技巧是使用date_trunc函数。

答案 1 :(得分:0)

SELECT
COUNT(DISTINCT t.id)
FROM tags t
WHERE t.description LIKE '%Name%'
AND (t.description LIKE '%On-boarding%' OR t.description LIKE %Pending Approval Inventory%')
AND t.title = 'follow-up'
AND CONVERT(DATE,t.created_at) = CONVERT(DATE,GETDATE());

这里我使用了T-SQL Build In Date函数进行强制转换,可能需要在PostgreSQL中使用一些内置函数。