我有两张这样的表
#remember original values
source_old = df.source.copy()
df.source = (df.source.diff() != 0).cumsum() - 1
#series for maping
ser = pd.Series(df.source.values, index=source_old).drop_duplicates()
print (ser)
source
1 0
579 1
745 2
834 3
dtype: int32
#map where values exists
df.target = df.target.mask(df.target.isin(ser), df.target.map(ser)).astype(int)
print (df)
source target weight
0 0 70399 0.988375
1 0 33919 0.981573
2 0 62461 0.981427
3 1 0 0.983019
4 2 0 0.995580
5 3 0 0.980943
我希望使用SQL子查询获得以下查询的相同结果。
var series = require('stream-series');
gulp.task('fincss', function () {
watch([workData.sassSrcFiles, workData.cssVendorSrcFiles], {}, function () {
var convertFromScssToCssAndConcat =
gulp.src(workData.sassSrcFiles)
.pipe(plumber({errorHandler: function(error) {
convertFromScssToCssAndConcat.emit('end') // important
}}))
.pipe(sass());
var minifyAndConcatExistingCss =
gulp.src(workData.cssVendorSrcFiles)
.pipe(plumber(error));
return series(minifyAndConcatExistingCss, convertFromScssToCssAndConcat)
.pipe(concat('final.min.css'))
.pipe(uglifycss())
.pipe(gulp.dest(workData.cssDest))
.pipe(livereload());
});
以下是我的尝试。
create table department(
Dno int primary key,
name varchar(50) not null
)
create table employee(
empid int primary key,
name varchar(50) not null,
sal decimal(7,2) not null,
dno int foreign key references department(Dno))
这会产生以下错误。
当选择列表中只能指定一个表达式时 子查询不是用EXISTS引入的。
答案 0 :(得分:1)
您的子查询应该只选择一个列并返回一个列表。
SELECT Name, Sal
FROM Employee
WHERE Name= 'aa' AND Dno IN
(SELECT Dno FROM Department)
另一方面,您无法通过创建子查询将Department
中的列添加到结果中。
实现您想要获得的目标的最佳方式是加入表格:
SELECT e.Name, e.Sal, d.Dno, d.Name
FROM Employee e
INNER JOIN Department d ON e.Dno = d.Dno
WHERE e.name = 'aa'
答案 1 :(得分:1)
SELECT Name, Sal
FROM Employee
WHERE Name= 'aa' AND Dno IN
(SELECT Dno
FROM Department)
您需要删除子查询中的名称。执行查询时,请考虑将子查询接收的每个值与“main”查询的值进行比较。
如果您在员工中有以下记录
ID Name Sal Dno
1 Bob 3000 3
2 Alice 3000 2
以下记录在部门
Dno Name
1 Advertisement
2 Programming
3 Analysement
您当然不能将Bob的值3与{3,Analysement}进行比较。子查询通常用于过滤行,而不是像连接一样可以显示额外的值。
答案 2 :(得分:1)
子查询可用于从多个RELATED表中获取数据。 它不能用于连接两个表。 如果你想显示多个表,你必须使用JOIN或UNION。
答案 3 :(得分:0)
您不能在子查询中放置两列
SELECT Name, Sal
FROM Employee
WHERE Name= 'aa' AND Dno IN
(SELECT Dno
FROM Department)
答案 4 :(得分:0)
更好地使用' EXISTS'而不是' IN'条款。这是脚本
SELECT Name, Sal
FROM Employee e
WHERE Name= 'aa'
AND EXISTS (SELECT 1 FROM Department d WHERE e.Dno=d.Dno)