Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示所有列的SQL查询_Sql - Fatal编程技术网

显示所有列的SQL查询

显示所有列的SQL查询,sql,Sql,我有下表和一个SQL查询来确定表中是否有任何项目的买入价高于卖出价 查询: SELECT id, name FROM orders GROUP BY id, name HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END) 问题是,这只返回两行: 我要查找的结果应该显示所有列中买入价高于卖出价的所有项目。阅读groupby我发现它只返回不同的值

我有下表和一个SQL查询来确定表中是否有任何项目的买入价高于卖出价

查询:

SELECT id, name 
FROM orders 
GROUP BY id, name 
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END)
问题是,这只返回两行:

我要查找的结果应该显示所有列中买入价高于卖出价的所有项目。阅读
groupby
我发现它只返回不同的值。我是否必须使用连接来实现最终结果

|id  |buy   |date                    |price |name
 --------------------------------------------------
 3    false  2017-01-04 19:23:12.000  7      bread
 3    false  2017-01-04 19:23:12.000  4      bread
 2    false  2017-01-04 19:23:12.000  7      grapes
使用此查询,结果是下表中不应有以红色突出显示的行

SELECT * 
FROM orders 
WHERE id IN (SELECT id 
             FROM orders 
             GROUP BY id, name 
             HAVING MAX(CASE WHEN buy = 'false'  THEN price END) > MIN(CASE WHEN  buy = 'true' THEN price END))

将现有查询用作子查询:

SELECT * from orders where id in 
(
    SELECT id 
    FROM orders 
    GROUP BY id, name 
    HAVING MAX(CASE WHEN buy = 'false'  THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END)
)

我已尝试将其他列添加到查询中。我更新了postHi Fauxmosapien的回答,在您的查询中添加了where子句,结果是正确的。非常感谢您的帮助。