我为最近遇到的错误整理了一个测试表.它涉及在尝试从MySQL表中删除单个记录时使用LIMIT.
我说的错误是" 你的SQL语法有错误;检查与你的MySQL服务器版本相对应的手册,以便在第1行的'LIMIT 1'附近使用正确的语法 "
我放在一起的表叫做测试 ; 它有3列,id,name和created.我用几个记录填充了表,然后尝试删除一个.以下是我过去尝试完成此操作的声明.
DELETE t FROM test t WHERE t.name = 'foo' LIMIT 1
如果不使用LIMIT 1,语句执行得很好,但是如果不需要它,我当然不会使用LIMIT.
我完全知道我可以使用另一个语句来成功完成此DELETE.见下文:
DELETE FROM test WHERE name = 'foo' LIMIT 1
但是我的问题集中在为什么第一个声明不适用于LIMIT.
所以我的问题是,对于生成此错误的第一个语句,我做错了什么?
是否可以通过subselect实现LEFT JOIN的等效,其中需要多列.这就是我的意思.
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
Run Code Online (Sandbox Code Playgroud)
现在这样做,这给了我一个'操作数应该包含1列'的错误.
是的我知道LEFT JOIN可以做到这一点,但我被告知可以通过subselect我很好奇它是如何完成的.
我想知道在模型中处理错误的例外标准是什么.
目前我的所有模型都使用'setError'和'getError'方法.
这意味着我只关心模型中对方法的调用是真还是假.如果它是假的,那么我会$this->model->getError()在我的控制器中使用.
另外我正在考虑设置一个包含我所有错误的单独文件.每个模型一个文件,也想对此有所了解.
我想知道如何将两个条件中OR使用的最左边条件的结果返回 给LEFT JOINif true.
到目前为止我遇到的解决方案都涉及使用CASE声明SELECT,这确实意味着我放弃了该OR条款.
另一个解决方案涉及使用CASE语句ORDER BY.
是否有任何其他解决方案可以减少使用CASE陈述.我问的原因是因为现在只有两个,LEFT JOIN但随着时间的推移会增加更多.
SELECT item.id,
item.part_number,
lang.data AS name,
lang2.data AS description
FROM item
LEFT JOIN
language lang
ON item.id = lang.item
AND (lang.language = 'fr' OR lang.language = 'en')
LEFT JOIN
language lang2
ON item.id = lang2.item
AND (lang2.language = 'fr' OR lang2.language = 'en')
WHERE item.part_number = '34KM003KL'
Run Code Online (Sandbox Code Playgroud) 我正在使用money_format,格式为%.2n,但得到了一个奇怪的结果。
我已经整理了示例代码,所以其他人可以自己测试。
<?php
setlocale(LC_MONETARY, 'en_US');
$deal = array(
array(
'amt' => 1350,
'rate' => .75,
'lod' => 47
),
array(
'amt' => 990,
'rate' => .75,
'lod' => 27
),
array(
'amt' => 4180,
'rate' => .75,
'lod' => 65
),
array(
'amt' => 2370,
'rate' => .75,
'lod' => 26
)
);
foreach ($deal as $value) {
$fee = (($value['amt'] / 1000) * $value['rate']) * $value['lod'];
var_dump($fee);
echo '<br />money_format: ', money_format('%.2n', $fee), '<br />number_format: ', number_format($fee, 2), '<br …Run Code Online (Sandbox Code Playgroud) 我有一个与1到n查询有关的问题,我希望有人可以解释一下.
这就是我想要完成的事情.
我有几个家,每个家可能有多个住户.我想选择5个家庭和所有相关的住户.我知道有两种做法.其中最常见的是使用IN条件获取5个家庭的select语句,然后使用IN条件获取相关的占用者.另一种方法是使用带有子查询的一个查询来改变两个查询.
没有使用子查询,还有其他方法可以完成吗?
更新:
似乎共识是使用子查询这是不可能的.
我希望有更好数学能力的人能帮助我找出字符串的长度和字符集的总体可能性.
即[a-f0-9] {6}
这种随机字符模式有哪些可能性?
sql ×3
join ×2
limit ×2
php ×2
model ×1
money-format ×1
mysql ×1
one-to-many ×1
random ×1
sql-delete ×1
subquery ×1
variation ×1
variations ×1