awk 'BEGIN {FS=OFS="\t"} {i=$1FS$2} {a[i]=!a[i]?$3:a[i]FS"1\n" i"\t"$3FS"1"} END {for (l in a) {print l,a[l]}}' infile > outfile
是日期类型,并且是d 205 exp_a 1
d 205 exp_b 1
a 123 exp_a 1
a 123 ref 1
b 146 exp_a
c 156 ref
。
下面的查询不起作用
useDate
答案 0 :(得分:3)
您的问题是where
子句-NULL
的值与<>
或=
不匹配。您可以这样做:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND
(useDate <> CURDATE() or useDate IS NULL);
或使用MySQL的NULL安全比较:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND
NOT (useDate <=> CURDATE());
答案 1 :(得分:3)
SQL 101:NULL
不等于任何值。同样,NULL
不等于任何东西。在以下情况下使用IS NULL
:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());
答案 2 :(得分:1)
转换date
并在许可证列上使用Trim
,以防出现空白
UPDATE licenses
SET useDate = date(now())
WHERE Trim(license) = 'ABC123' AND date(useDate)!= date(now());
答案 3 :(得分:0)
您可能有useDate的日期时间
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND date(useDate) != CURDATE();
所以您需要比较日期部分
答案 4 :(得分:0)
该请求对我有用;)
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());