嗨,有人能帮我了解sql 吗
我的表中有这些数据:
date_addd|位置|状态2012-08-01马尼拉12012-08-01日本12012-08-01宿务12012-08-04马尼拉12012-08-04宿务12012-08-04非洲12012-08-06马尼拉12012-08-06日本12012-08-06宿务1
我如何获得位于"马尼拉"、"日本"、"宿务"且状态=1 的日期编码结果
这三个数据必须存在,我才能得到日期。
结果应该是:基于此表
日期(_D)2012年8月1日2012年8月6日
自2012年8月4日起,"日本"就不存在了。
我当前的示例SQL:
从表格中选择日期,其中location='Manila',location='Japan'AND location='Cbu'AND STATUS=1;
请帮忙。。。。。任何帮助都将非常感谢
试试这个:
SELECT DATE_ADDED
FROM TABLE
WHERE LOCATION IN ('MANILA' , 'JAPAN' , 'CEBU')
AND STATUS =1
GROUP BY DATE_ADDED
HAVING (COUNT(DISTINCT LOCATION)=3)
您需要SQL IN
运算符:
SELECT date_added FROM TABLE WHERE location IN ('Manila', 'Japan', 'Cebu') AND STATUS =1;
或者,您需要使用OR
运算符并将位置语句括起来:
SELECT date_added FROM TABLE WHERE ( location ='Manila' OR location ='Japan' OR location ='Cebu' ) AND STATUS =1;
试试这个
SELECT date_added FROM TABLE WHERE location ='Manila' or location ='Japan' or location ='Cebu' AND STATUS =1;
或
select date_added FROM TABLE WHERE location in ('Manila','Japan','Cebu') AND status='1' GROUPED BY date_added
WHERE location IN ('Manila' , 'Japan', 'Cebu') AND status = 1
当在同一字段上使用AND
条件时,它总是会导致false,因为一个字段只能有1 possible value
。所以你需要对使用IN
SELECT Date_added
FROM myTable
WHERE `Location` IN ('MANILA' , 'JAPAN' , 'CEBU')
AND `Status` =1
GROUP BY Date_added
HAVING COUNT(DISTINCT Location) = 3