我想做这样的事情,但似乎我做不到:
UPDATE products p2
SET
manufacturer =
(
SELECT manufacturer
FROM products p, manufacturers m, etc.
WHERE
...other stuff...
p.name LIKE CONCAT('%',m.name,'%')
AND p.id = p2.id
)
WHERE manufacturer = 0
Run Code Online (Sandbox Code Playgroud)
错误是:#1093 - 您无法在 FROM 子句中指定用于更新的目标表“p2”
问题是我的表中有一个制造商字段,但一些制造商名称位于product_name-string而不是制造商字段中,所以我必须通过product_name获取制造商id并更新其制造商的产品表ID。
我可以分两步完成,但我喜欢一步完成。
我在某些情况下使用 mysql like 关键字时遇到问题。我的要求是这样的。首先,当我搜索 时'ABC',结果应该找到ABCandABCdef但不是 xyzABCdef or xyzABC。乍一看使用起来似乎很简单ABC%。但在我搜索的情况下'heart%',它不会返回具有的行'liver heart',因为它只返回heart在字符串开头具有的行。然后我尝试使用% heart%。此返回的行具有'liver heart'但不返回那些在字符串开头具有心脏的行。我有点被困在这里......所以大家帮助我。
编辑 在你们的帮助下,我提出了以下解决方案,但仍然给我带来了一些问题。
SELECT q.question_id, q.question, q.date,p.fname,p.lname,p.phys_id,
p.pic_path
FROM questions q JOIN physiciansprofile p ON p.phys_id=q.phys_id
WHERE q.question LIKE 'heart%' OR question LIKE '% heart%'
AND q.question LIKE 'liver%' OR q.question LIKE '% liver%'
ORDER BY q.date DESC LIMIT 0,10;
Run Code Online (Sandbox Code Playgroud)
但是这个查询也返回了heart failure。symptoms liver有没有解决这个问题的方法。我需要获得包含 和 的结果,heart并且 …
我应该如何在Python中为SQLite3进行真正的转义?
\n\n如果我用谷歌搜索它(或搜索 stackoverflow),就会有大量的问题,每次的回答都是这样的:
\n\ndbcursor.execute("SELECT * FROM `foo` WHERE `bar` like ?", ["foobar"])\nRun Code Online (Sandbox Code Playgroud)\n\n这有助于防止 SQL 注入,如果我只用“=”进行比较就足够了,但它当然不会删除通配符。
\n\n所以如果我这样做
\n\ncursor.execute(u"UPDATE `cookies` set `count`=? WHERE `nickname` ilike ?", (cookies, name))\nRun Code Online (Sandbox Code Playgroud)\n\n一些用户可以为昵称提供“%”,并用一行替换所有 cookie 条目。 \n我可以自己过滤它(呃\xe2\x80\xa6 无论如何,我可能会忘记那些鲜为人知的通配符之一) ,我可以在昵称和昵称上使用小写字母,并将“ilike”替换为“=”,但我真正想做的是:
\n\nfoo = sqlescape(nick)+"%"\ncursor.execute(u"UPDATE `cookies` set `count`=? WHERE `nickname` ilike ?", (cookies, foo))\nRun Code Online (Sandbox Code Playgroud)\n 我有一个实体如下
public class Employee implements Serializable {
@Id
@Column(name = "EMPSEQ")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long empSeq;
@Column(name = "EMPID")
private String empId;
@Column(name = "WINDOWSLOGINID")
private String logInId;
// assume respective getter and setter methods
}
Run Code Online (Sandbox Code Playgroud)
我想查询 logInId 不以“5”开头的所有行
我尝试了下面的代码:
query = session.createQuery("select * from Employee e where e.logInId not like 5%");
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用。NOT LIKE正确的使用方法是什么HQL
我有一个表,其中包含一堆用逗号分隔的数字。
我想从表中检索字符串中包含确切数字而不是部分数字的行。
例子:
CREATE TABLE IF NOT EXISTS `teams` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`uids` text NOT NULL,
`islive` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `teams` (`id`, `name`, `uids`, `islive`) VALUES
(1, 'Test Team', '1,2,8', 1),
(3, 'Test Team 2', '14,18,19', 1),
(4, 'Another Team', '1,8,20,23', 1);
Run Code Online (Sandbox Code Playgroud)
我想搜索 1 在字符串中的位置。
目前,如果我使用 Contains 或 LIKE,它会返回所有带有 1 的行,但 18、19 等不是 1,但其中确实有 1。
我需要做正则表达式吗?
我正在尝试在 where 子句中使用下划线使用类似条件来过滤我的 sql 查询。但是,当我过滤时,我想要所有仅包含 TS_AW19 的值,而不是所有包含 TS 的值,这是我的查询当前给我的。有人可以帮助我使用正确的语法来用于下面的查询吗?
SELECT
date,
creative_name,
SUM(revenue)*2 as spend
FROM `crate-media-group-client-data.DV360_ALL.GGLDV360BM_CREATIVE_*`
WHERE advertiser LIKE '%Topshop/Topman%' AND creative_name LIKE '%TS_AW19%' AND date = '2019-09-20'
GROUP BY 1,2
ORDER by creative_name
Run Code Online (Sandbox Code Playgroud)
注意:我对此查询使用大查询语法
我正在尝试在 Snowflake 中运行以下查询:
SELECT * FROM chapters
WHERE
title NOT LIKE ANY ('Summary%', 'Appendix%')
Run Code Online (Sandbox Code Playgroud)
但它出错了。我知道雪花支持 LIKE ANY 查询语法。但我不确定为什么我的查询不起作用。
我希望将输入字符串与我的PHP页面匹配,就像SQL(MySQL)中的LIKE命令完成匹配一样,以保持其他搜索的一致性.从(我已经看到但不理解)一些PHP语法包括SQL命令我想知道这是否可能?
这样做的原因是我现在正在实现搜索关键字与数据库中存储在序列化数组中的字段,我必须在PHP中进行反序列化并根据数组的结构进行搜索.我无法查询表,只需要查询的匹配能力.否则我需要找到一个替代的匹配例程,这将不一致.我无法返回并重新构建数据库,因为这不是预期的方式回到规范中.是的,我需要一个丑陋的黑客,但我正在寻找最优雅的.
如果不可能,我可以使用任何将用户键入的文本作为关键字与存储文本匹配的建议.
编辑(澄清):我的主要问题是我没有彻底掌握LIKE命令如何工作(只是复制代码),并且由于关键字意味着某种程度的模糊性,如果我切换到关键字,我希望保留这种模糊性一个正则表达式.正如我所说的那样,正则表达式并不是那么好.我的查询是"LIKE'matmeme%'"
我有两个列表:
Genres
ID
genre
Run Code Online (Sandbox Code Playgroud)
和
Adjectives
ID
adjective_title
Run Code Online (Sandbox Code Playgroud)
我需要做一个select,它使用like语法从两个表列返回匹配值.
例如,如果ep是使用like结果输入的值,则如下所示:
result_column:
--------------
epiphonic -- (from genres table)
epic -- (from adjectives table)
Run Code Online (Sandbox Code Playgroud)
等等...
我很确定我需要使用子查询来返回结果.
在我的代码中,我必须做一个类似条件的简单SQL查询.我是这样做的
my $out = "/Users/zero/out.log";
my $filename = "/Users/zero/data.txt";
my $dbh = DBI->connect("DBI:Oracle:sid=$sid;host=$host;port=$port", $user, $pwd) or die "Couldn't connect to database: " . DBI->errstr;
my $query = "select SOMETHING from SOMETHING_1 where SOMETHING like ?||'%' ";
my $sth = $dbh->prepare($query) or die "Connection Error: " . $dbh->errstr;
open (IN,"< $filename") or die("Unable to open $filename");
my @righe = <IN>;
close IN;
open (OUT,">$out") or die "Unable to open $out";
foreach my $riga (@righe) {
chomp $riga;
(my $valore) = split …Run Code Online (Sandbox Code Playgroud)