我有一个包含以下行的表格设置:
orderfrom | Name
-------------------------------------------------------
ClearVision, Oakley, I-Deal Optics | ClearVision
ClearVision | I-Deal Optics
ClearVision | Oakley
我想要一个查询,它将选择“orderfrom”列中“Name”值而不是的行。在这种情况下,它将返回第2行和第3行,但不返回第一行(因为“ClearVision”在orderfrom列中)。
这是我尝试过的:
SELECT * FROM `dist`
JOIN `patientacct`
ON `patientacct`.dist LIKE CONCAT('%', `dist`.name ,'%')
INNER JOIN `treasure`
ON `treasure`.`id` = `patientacct`.`id`
WHERE (status = 'To Order' AND ****** ORDER BY `name` ASC);
** 部分是我需要帮助的地方。我试过这个:
(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')) ))
答案 0 :(得分:0)
我不确定,但这个简单的代码工作得不会那么好吗?
mysql> select * from stringComp;
+------------------------------------+---------------+
| value1 | value2 |
+------------------------------------+---------------+
| ClearVision, Oakley, I-Deal Optics | ClearVision
|
| ClearVision | I-Deal Optics |
| ClearVision | Oakley |
| ClearVision, Oakley, I-Deal Optics | ClearVision |
+------------------------------------+---------------+
4 rows in set (0.00 sec)
注意第1行的值2周围有额外的空格。
mysql> select * from stringComp where value1 not like concat('%',value2,'%');
+------------------------------------+---------------+
| value1 | value2 |
+------------------------------------+---------------+
| ClearVision, Oakley, I-Deal Optics | ClearVision
|
| ClearVision | I-Deal Optics |
| ClearVision | Oakley |
+------------------------------------+---------------+
3 rows in set (0.00 sec)
这个简单的SQL比较列value2的内容,看它们是否在列value1中,并返回它们不在的行。
所以,为了回答你的问题,我认为where子句中的这个小片段会给你正确的结果: value1不像concat('%',value2,'%')
编辑:我刚刚在您的查询中看到了额外的一行:我认为
中有一个额外的括号(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')) ))
应该是:
(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')))
编辑2:为什么你在那里有所有这些括号?
SELECT
*
FROM
`dist`
JOIN `patientacct`
ON `patientacct`.dist LIKE CONCAT('%', `dist`.name ,'%')
INNER JOIN `treasure`
ON `treasure`.`id` = `patientacct`.`id`
WHERE
status = 'To Order'
AND `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')
ORDER BY
`name` ASC;
答案 1 :(得分:0)
INNER JOIN treasure
在treasure
。id
= patientacct
。id
哪里
status ='To Order'
和dist
。名称不喜欢CONCAT('%',patientacct
。orderfrom,'%')